DragonFly On-Line Manual Pages
PTHREAD_BARRIER(3) DragonFly Library Functions Manual PTHREAD_BARRIER(3)
NAME
pthread_barrier_destroy, pthread_barrier_init, pthread_barrier_wait --
destroy, initialize or wait on a barrier object
LIBRARY
POSIX Threads Library (libpthread, -lpthread)
SYNOPSIS
#include <pthread.h>
int
pthread_barrier_destroy(pthread_barrier_t *barrier);
int
pthread_barrier_init(pthread_barrier_t * restrict barrier,
const pthread_barrierattr_t * restrict attr, unsigned 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 released is
determined by the count argument to pthread_barrier_init(). Once the
threads have been released the barrier will be reset.
IMPLEMENTATION NOTES
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 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 invalid.
The pthread_barrier_init() function will fail if:
[EAGAIN] The system lacks resources, other than memory, to
initialize barrier.
[EINVAL] The count argument is less than 1.
[ENOMEM] Insufficient memory to initialize barrier.
SEE ALSO
pthread_barrierattr(3)
DragonFly 5.1 February 22, 2018 DragonFly 5.1