PTHREAD_TESTCANCEL(3C) Standard C Library Functions PTHREAD_TESTCANCEL(3C)
pthread_testcancel - create cancellation point in the calling thread
cc -mt [ flag... ] file... -lpthread [ library... ]
#include <pthread.h>
void pthread_testcancel(void);
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.
The pthread_testcancel() function returns void.
The pthread_testcancel() function does not return errors.
See cancellation(7) for an example of using pthread_testcancel() to
force testing for cancellation and a discussion of cancellation
concepts.
See attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
|MT-Level | MT-Safe |
+--------------------+-----------------+
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)
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)
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)