for connected embedded systems
![]() |
![]() |
![]() |
![]() |
pthread_barrier_wait()
Synchronize participating threads at the barrier
Synopsis:
#include <sync.h> int pthread_barrier_wait( pthread_barrier_t * barrier );
Arguments:
- barrier
- A pointer to the pthread_barrier_t object that you want to use to synchronize the threads. You must initialize the barrier by calling pthread_barrier_init(), before calling pthread_barrier_wait().
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The pthread_barrier_wait() function synchronizes participating threads at the barrier referenced by barrier. The calling thread blocks -- that is, doesn't return from pthread_barrier_wait() -- until the required number of threads have called pthread_barrier_wait(), specifying the barrier.
When the required number of threads have called pthread_barrier_wait() specifying the barrier, the constant BARRIER_SERIAL_THREAD is returned to one unspecified thread, and zero is returned to each of the remaining threads. At this point, the barrier is reset to the state it occupied as a result of the most recent pthread_barrier_init() function that referenced it.
The constant BARRIER_SERIAL_THREAD is defined in <pthread.h>, and its value is distinct from any other value that pthread_barrier_wait() returns.
If a signal is delivered to a thread blocked on a barrier, on return from the signal handler, the thread resumes waiting at the barrier as if it hadn't been interrupted.
Returns:
BARRIER_SERIAL_THREAD for a single (arbitrary) thread synchronized at the barrier and zero for each of the other threads; otherwise, an error number is returned:
- EINVAL
- The barrier argument isn't initialized.
Classification:
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | Yes |
| Thread | Yes |
See also:
pthread_barrier_destroy(), pthread_barrier_init()
![]() |
![]() |
![]() |
![]() |

![[Previous]](../prev.gif)
![[Contents]](../contents.gif)
![[Index]](../keyword_index.gif)
![[Next]](../next.gif)