PTHREAD_TESTCANCEL(3C) Standard C Library Functions PTHREAD_TESTCANCEL(3C)
NAME
pthread_testcancel - create cancellation point in the calling thread
SYNOPSIS
cc -mt [
flag... ]
file... -lpthread [
library... ]
#include <pthread.h>
void pthread_testcancel(
void);
DESCRIPTION
The
pthread_testcancel() function forces testing for cancellation. This
is useful when you need to execute code that runs for long periods
without encountering cancellation points; such as a library routine that
executes long-running computations without cancellation points. This type
of code can block cancellation for unacceptable long periods of time.
One strategy for avoiding blocking cancellation for long periods, is to
insert calls to
pthread_testcancel() in the long-running computation code
and to setup a cancellation handler in the library code, if required.
RETURN VALUES
The
pthread_testcancel() function returns
void.
ERRORS
The
pthread_testcancel() function does not return errors.
EXAMPLES
See
cancellation(7) for an example of using
pthread_testcancel() to force
testing for cancellation and a discussion of cancellation concepts.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
|MT-Level | MT-Safe |
+--------------------+-----------------+
SEE ALSO
Intro(3),
pthread_cleanup_pop(3C),
pthread_cleanup_push(3C),
pthread_exit(3C),
pthread_join(3C),
pthread_setcancelstate(3C),
pthread_setcanceltype(3C),
setjmp(3C),
attributes(7),
cancellation(7),
condition(7),
standards(7)NOTES
The
pthread_testcancel() function has no effect if cancellation is
disabled.
Use
pthread_testcancel() with
pthread_setcanceltype() called with its
canceltype set to
PTHREAD_CANCEL_DEFERRED. The
pthread_testcancel() function operation is undefined if
pthread_setcanceltype() was called
with its
canceltype argument set to
PTHREAD_CANCEL_ASYNCHRONOUS.
It is possible to kill a thread when it is holding a resource, such as
lock or allocated memory. If that thread has not setup a cancellation
cleanup handler to release the held resource, the application is "cancel-
unsafe". See
attributes(7) for a discussion of Cancel-Safety, Deferred-
Cancel-Safety, and Asynchronous-Cancel-Safety.
March 23, 2005
PTHREAD_TESTCANCEL(3C)