PTHREAD_ONCE(3) BSD Programmer's Manual PTHREAD_ONCE(3)NAMEpthread_once - execute a function at most once
SYNOPSIS
#include <pthread.h>
int
pthread_once(pthread_once_t *once_control, void (*init_routine)(void));
pthread_once_t once_control = PTHREAD_ONCE_INIT;
DESCRIPTION
This interface is defined by IEEE Std1003.1c (``POSIX'').
The pthread_once() function causes the the function passed as
init_routine to be executed at most one time in the life of a program.
The initialization state is maintained in once_control. The behavior of
pthread_once() is undefined if once_control has automatic storage class
or is not initialized with PTHREAD_ONCE_INIT.
The intent of pthread_once() is that it be used to initialize a routine
package dynamically at run time in a thread-safe manner. Pthread_once()
performs sufficient locking to guarantee that at most one thread executes
init_routine.
RETURN VALUES
The pthread_once() function returns 0 upon successful completion. If an
error occurs, a non-zero error value is returned.
ERRORS
The pthread_once function may fail and return the following error:
[EINVAL] An invalid parameter was passed as an argument to
pthread_once().
SEE ALSOpthreads(3), pthread_create(3), pthread_exit(3)STANDARDS
The pthread_once function conforms to IEEE Std1003.1c (``POSIX'').
HISTORY
The pthread_once function first appeared in BSD/OS 3.0.
4th Berkeley Distribution June 3, 1996 1