| PTHREAD_CLEANUP(3) | Library Functions Manual | PTHREAD_CLEANUP(3) |
pthread_cleanup_push,
pthread_cleanup_pop — add
and remove cleanup functions for thread exit
POSIX Threads Library (libpthread, -lpthread)
#include
<pthread.h>
void
pthread_cleanup_push(void
(*cleanup_routine)(void *),
void *arg);
void
pthread_cleanup_pop(int
execute);
The
pthread_cleanup_push()
function adds cleanup_routine to the top of the stack
of cleanup handlers that get called when the current thread exits.
The
pthread_cleanup_pop()
function pops the top cleanup routine off of the current threads cleanup
routine stack, and, if execute is non-zero, it will
execute the function.
When cleanup_routine is called, it is passed arg as its only argument.
These functions may be implemented as
macros which contain scope delimiters; therefore, there must be a matching
pthread_cleanup_pop()
for every pthread_cleanup_push() at the same level
of lexical scoping.
The effect of calling
longjmp()
or
siglongjmp()
is undefined after a call to pthread_cleanup_push()
but before the matching call to
pthread_cleanup_pop() after the jump buffer was
filled.
Neither pthread_cleanup_push() nor
pthread_cleanup_pop() returns a value.
None.
Both functions conform to IEEE Std 1003.1-2001 (“POSIX.1”).
| July 9, 2010 | NetBSD 11.0 |