Namespaces
Variants

std::barrier<CompletionFunction>:: arrive_and_wait

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
void arrive_and_wait ( ) ;
(начиная с C++20)

Атомарно уменьшает ожидаемое значение счетчика на 1, затем блокируется в точке синхронизации для текущей фазы до тех пор, пока не будет выполнен шаг завершения текущей фазы. Эквивалентно wait ( arrive ( ) ) ; .

Поведение не определено, если ожидаемое количество для текущей фазы равно нулю.

Содержание

Параметры

(нет)

Возвращаемое значение

(нет)

Исключения

Выбрасывает std::system_error с кодом ошибки, допустимым для типов мьютексов, при возникновении ошибки.

Примечания

Если текущее ожидаемое количество уменьшается до нуля при вызове этой функции, выполняется этап завершения фазы, и эта функция не блокируется.

Если текущее ожидаемое количество равно нулю перед вызовом этой функции, начальное ожидаемое количество для всех последующих фаз также равно нулю, что означает, что barrier не может быть повторно использован.

Пример