Инициализировать барьер
#include <pthread.h>int pthread_barrier_init( pthread_barrier_t *barrier,const pthread_barrierattr_t *attr,unsigned int count );
pthread_barrier_t
.NULL
или указатель на структуру pthread_barrierattr_t
, характеризующую используемые атрибуты барьера.libc
Функция pthread_barrier_init() выделяет ресурсы, требуемые для последующего использования барьера barrier и применяет к нему указанные attr атрибуты. Если праметр attr равен NULL
, используются атрибуты по умолчанию. Будучи однажды инициализированным барьер может использоваться требуемое число раз.
Следует аллоцировать объекты синхронизации только в памяти с типичным мапированием. Так, на некоторых процессорах с архитектурой PPC атомарные операции синхронизации будут приводить к падению процесса если выделенная память является не кешируемой. |
Если вызов pthread_barrier_init() завершается с ошибкой, барьер не инициализируется.
В случае, если стандартные атрибуты подходят, для статической инициализации барьера может применяться макрос PTHREAD_BARRIER_INITIALIZER()
. Это эквивалентно передаче pthread_barrier_init() параметра attr со значением NULL
, за исключением отсутствия контроля ошибок.
pthread_barrier_t barrier = PTHREAD_BARRIER_INITIALIZER( 2 );
POSIX 1003.1 Threads, Barriers
pthread_barrierattr_init(), pthread_barrier_destroy(), pthread_barrier_wait()
Предыдущий раздел: Описание API системной библиотеки