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'') .