| PTHREAD_CLEANUP(3) | Library Functions Manual | PTHREAD_CLEANUP(3) | 
pthread_cleanup_push,
  pthread_cleanup_pop —
#include <pthread.h>
void
  
  pthread_cleanup_push(void
    (*cleanup_routine)(void *),
    void *arg);
void
  
  pthread_cleanup_pop(int
    execute);
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.
pthread_cleanup_push() nor
  pthread_cleanup_pop() returns a value.
| July 9, 2010 | NetBSD 10.0 |