void
pthread_cleanup_push(void *cleanup_routinevoid *, void *arg)
void
pthread_cleanup_pop(int execute)
)
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.
)
nor
pthread_cleanup_pop()
returns a value.
)
and
pthread_cleanup_pop()
conform to
ISO/IEC 9945-1:1996 (``POSIX.1'') .