| PTHREAD_ONCE(3) | Library Functions Manual | PTHREAD_ONCE(3) | 
pthread_once —
#include <pthread.h>
int
  
  pthread_once(pthread_once_t
    *once_control, void
    (*init_routine)(void));
pthread_once_t once_control
    =
  PTHREAD_ONCE_INIT;
pthread_once() by any thread in a
  process, with a given once_control, will call the
  init_routine() with no arguments. Subsequent calls to
  pthread_once() with the same
  once_control will not call the
  init_routine() On return from
  pthread_once(), it is guaranteed that
  init_routine() has completed. The
  once_control parameter is used to determine whether the
  associated initialization routine has been called.
The function pthread_once() is not a
    cancellation point. However, if init_routine() is a
    cancellation point and is cancelled, the effect on
    once_control is as if
    pthread_once() was never called.
The constant PTHREAD_ONCE_INIT initializes
    the static once synchronization control structure
    once_control to be used with
    pthread_once(). The behavior of
    pthread_once() is undefined if
    once_control has automatic storage duration or is not
    initialized by PTHREAD_ONCE_INIT.
pthread_once() function will return
  zero. Otherwise an error number will be returned to indicate the error.
| July 9, 2010 | NetBSD 9.4 |