NAME
pthread_cleanup_push,
pthread_cleanup_pop
—
add and remove cleanup functions for thread
exit
LIBRARY
POSIX Threads Library (libpthread, -lpthread)
SYNOPSIS
#include <pthread.h>
void
pthread_cleanup_push(
void
(*cleanup_routine)(void *),
void *arg);
void
pthread_cleanup_pop(
int
execute);
DESCRIPTION
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.
RETURN VALUES
Neither
pthread_cleanup_push() nor
pthread_cleanup_pop() returns a value.
ERRORS
None.
SEE ALSO
pthread_exit(3)
STANDARDS
Both functions conform to
IEEE Std 1003.1-2001
(“POSIX.1”).