|
Threads Library Functions | pthread_setcancelstate(3THR) |
| pthread_setcancelstate - enable
or disable cancellation |
SYNOPSIS
|
cc -mt [ flag... ] file... -lpthread [ -lrt library... ]
#include <pthread.h> int pthread_setcancelstate(int state, int *oldstate); |
|
pthread_setcancelstate() 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:
-
PTHREAD_CANCEL_ENABLE
- 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(3THR) call causes
immediate cancellation.
-
PTHREAD_CANCEL_DISABLE
- 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.
See cancellation(3THR)
for the definition of a cancellation point and a discussion of cancellation
concepts. See pthread_setcanceltype(3THR) for explanations of deferred and asynchronous cancellation.
pthread_setcancelstate() is a cancellation point
when it is called with PTHREAD_CANCEL_ENABLE and the cancellation type is PTHREAD_CANCEL_ASYNCHRONOUS.
|
|
Upon successful completion, pthread_setcancelstate(),
returns 0. Otherwise, an error number is returned to
indicate the error.
|
|
The pthread_setcancelstate() function will fail
if:
-
EINVAL
- The specified state is not PTHREAD_CANCEL_ENABLE or PTHREAD_CANCEL_DISABLE.
|
|
See attributes(5)
for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
MT-Level | MT-Safe |
|
|
cancellation(3THR), condition(3THR), pthread_cancel(3THR), pthread_cleanup_pop(3THR), pthread_cleanup_push(3THR), pthread_exit(3THR), pthread_join(3THR), pthread_setcanceltype(3THR), pthread_testcancel(3THR), setjmp(3C), attributes(5)
|
| |