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

pthread_barrierattr(3)

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
Copyright © 2010-2024 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout