pthread_once_t
once_control
= PTHREAD_ONCE_INIT;
int
pthread_once(pthread_once_t *once_control
, void (*init_routine)(void)
)
)
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
is defined by header
<pthread.h
>.
The behavior of
pthread_once()
is undefined if
once_control
has automatic storage duration or is not initialized by
PTHREAD_ONCE_INIT
.
)
function will return zero.
Otherwise an error number will be returned to
indicate the error.
)
conforms to
ISO/IEC 9945-1:1996 (``POSIX.1'') .