pthread_barrier(3)
NAME
- pthread_barrier_destroy, pthread_barrier_init,
- pthread_barrier_wait destroy, initialize or wait on a barrier object
LIBRARY
library ``libpthread'' library ``libthr''
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, int count); int pthread_barrier_wait(pthread_barrier_t *barrier);
DESCRIPTION
- The pthread_barrier_init() function will initialize barrier
- with
attributes specified in 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 count. - The
pthread_barrier_destroy() function will destroy barrier and - release any
resources that may have been allocated on its behalf. - The pthread_barrier_wait() function will synchronize calling
- threads at
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 re - leased is determined by the count argument to pthread_barrier_init(). Once
- the threads
have been released the barrier will be reset.
IMPLEMENTATION NOTES
- In both library ``libpthread'' and library ``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 re - turned 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 EINTR.
ERRORS
The pthread_barrier_destroy() function will fail if:
- [EBUSY] An attempt was made to destroy barrier
- while it was in
- use.
- The pthread_barrier_destroy() and pthread_barrier_wait()
- functions may
fail if: - [EINVAL] The value specified by barrier is in
- valid.
- The pthread_barrier_init() function will fail if:
- [EAGAIN] The system lacks resources, other than
- memory, to ini
- tialize barrier.
- [EINVAL] The count argument is less than 1.
- [ENOMEM] Insufficient memory to initialize
- barrier.
SEE ALSO
HISTORY
- The pthread_barrier_destroy(), pthread_barrier_init() and pthread_barrier_wait() functions first appeared in library
- ``libpthread''
in FreeBSD 5.2, and in library ``libthr'' in FreeBSD 5.3. - BSD February 19, 2004