Синхронизировать потоки, ожидающие на барьере
#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 системной библиотеки