pthread_barrier_destroy , pthread_barrier_init , pthread_barrier_wait
- destroy, initialize or wait on a barrier object
LIBRARY
Lb libpthread
SYNOPSIS
#include <pthread.h> int
pthread_barrier_destroy (pthread_barrier_t *barrier); int
pthread_barrier_init (pthread_barrier_t *barrier const pthread_barrierattr_t *attr unsigned count); int
pthread_barrier_wait (pthread_barrier_t *barrier);
DESCRIPTION
The
pthread_barrier_init ();
function will initialize
Fa barrier
with attributes specified in
Fa attr ,
or if it is
NULL
with default attributes.
The number of threads that must call
pthread_barrier_wait ();
before any of the waiting threads can be
released is specified by
Fa count .
The
pthread_barrier_destroy ();
function will destroy
Fa barrier
and release any resources that may have been allocated on its behalf.
The
pthread_barrier_wait ();
function will synchronize calling threads at
Fa barrier .
The threads will be blocked from
making further progress until
a sufficient number of threads calls this function.
The number of threads that must call it before
any of them will be released is determined by the
Fa count
argument to
pthread_barrier_init (.);
Once the threads have been released the barrier will be reset.
IMPLEMENTATION NOTES
#include <both>
Lb libkse
and
Lb libthr
the
PTHREAD_BARRIER_SERIAL_THREAD
return value will
always be returned by the last thread to reach the barrier.
RETURN VALUES
If successful,
both
pthread_barrier_destroy ();
and
pthread_barrier_init ();
will return zero.
Otherwise, an error number will be returned to indicate the error.
If the call to
pthread_barrier_wait ();
is successful, all but one of the threads will return zero.
That one thread will return
PTHREAD_BARRIER_SERIAL_THREAD
Otherwise, an error number will be returned to indicate the error.
None of these functions will return
Er EINTR .
ERRORS
The
pthread_barrier_destroy ();
function will fail if:
Bq Er EBUSY
An attempt was made to destroy
Fa barrier
while it was in use.
The
pthread_barrier_destroy ();
and
pthread_barrier_wait ();
functions may fail if:
Bq Er EINVAL
The value specified by
Fa barrier
is invalid.
The
pthread_barrier_init ();
function will fail if:
Bq Er EAGAIN
The system lacks resources,
other than memory,
to initialize
Fa barrier .
Bq Er EINVAL
The
Fa count
argument is less than 1.
Bq Er ENOMEM
Insufficient memory to initialize
Fa barrier .
SEE ALSO
pthread_barrierattr3
HISTORY
The
pthread_barrier_destroy (,);
pthread_barrier_init ();
and
pthread_barrier_wait ();
functions first appeared in
Lb libkse
in
Fx 5.2 ,
and in
Lb libthr
in
Fx 5.3 .