Initialize a barrier object
#include <pthread.h> int pthread_barrier_init( pthread_barrier_t * barrier, const pthread_barrierattr_t * attr unsigned int count );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The pthread_barrier_init() function allocates any resources required to use the barrier referenced by barrier and initializes the barrier with attributes referenced by attr. If attr is NULL, the default barrier attributes are used. The effect is the same as passing the address of a default barrier attributes object. Once it's initialized, you can use the barrier any number of times without reinitializing it.
You should allocate synchronization objects only in normal memory mappings. On certain processors (e.g. some PPC ones), the atomic operations performed on synchronization objects will cause a fault if the control structure is allocated in uncached memory. |
If pthread_barrier_init() fails, the barrier isn't initialized.
In cases where the default barrier attributes are appropriate, you can use PTHREAD_BARRIER_INITIALIZER() macro to initialize barriers that are statically allocated. The effect is equivalent to dynamic initialization by a call to pthread_barrier_init() with parameter attr specified as NULL, except that no error checks are performed.
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
pthread_barrierattr_init(), pthread_barrier_destroy(), pthread_barrier_wait()
Processes and Threads chapter of Getting Started with QNX Neutrino