- enable or disable cancellation
cc –mt [ flag... ] file... –lpthread [ library... ] #include <pthread.h> int pthread_setcancelstate(int state, int *oldstate);
The pthread_setcancelstate() function atomically sets the calling thread's cancellation state to the specified state and if oldstate is not NULL, stores the previous cancellation state in oldstate.
The state can be either of the following:
This is the default. When cancellation is deferred (deferred cancellation is also the default), cancellation occurs when the target thread reaches a cancellation point and a cancel is pending. When cancellation is asynchronous, receipt of a pthread_cancel(3C) call causes immediate cancellation.
When cancellation is deferred, all cancellation requests to the target thread are held pending. When cancellation is asynchronous, all cancellation requests to the target thread are held pending; as soon as cancellation is re-enabled, pending cancellations are executed immediately.
Upon successful completion, pthread_setcancelstate(), returns 0. Otherwise, an error number is returned to indicate the error.
The pthread_setcancelstate() function will fail if:
The specified state is not PTHREAD_CANCEL_ENABLE or PTHREAD_CANCEL_DISABLE.
See attributes(5) for descriptions of the following attributes:
pthread_cancel(3C), pthread_cleanup_pop(3C), pthread_cleanup_push(3C), pthread_exit(3C), pthread_join(3C), pthread_setcanceltype(3C), pthread_testcancel(3C), setjmp(3C), attributes(5), cancellation(5), condition(5), standards(5)