Синхронизировать потоки, ожидающие на барьере
#include <sync.h>int pthread_barrier_wait( pthread_barrier_t *barrier );
pthread_barrier_t. Он должен быть предварительно создан с помощью pthread_barrier_init().libc
Функция pthread_barrier_wait() выполняет синхронизацию вовлеченных потоков на барьере barrier. Вызвавшие ее потоки блокируются до тех пор, пока не наберется требуемое число ожидающих потоков. Данный параметр определяется при создании барьера в функции pthread_barrier_init().
При выполнении указанного условия все ожидающие потоки разблокируются. При этом одному из потоков из функции возвращается значение PTHREAD_BARRIER_SERIAL_THREAD, а всем последующим 0. С этого момента состояние барьера сбрасывается в начальное, определенное в pthread_barrier_init().
Константа PTHREAD_BARRIER_SERIAL_THREAD определена в <pthread.h>.
При поступлении заблокированному потоку сигнала вызывается соответствующий обработчик, но при выходе из него поток снова оказывается заблокирован на том же барьере без прерывания процедуры синхронизации.
POSIX 1003.1 Threads, Barriers
pthread_barrier_destroy(), pthread_barrier_init()
Предыдущий раздел: Описание API системной библиотеки