std::barrier<CompletionFunction>::arrive_and_wait
void arrive_and_wait(); | (начиная с C++20) |
Атомарно уменьшает ожидаемое количество на 1, затем блокируется в точке синхронизации текущей фазы до выполнения шага завершения текущей фазы. Эквивалентно wait(arrive());.
Поведение не определено, если ожидаемое количество для текущей фазы равно нулю.
Параметры
(нет)
Возвращаемое значение
(нет)
Исключения
При ошибке выбрасывает std::system_error с кодом ошибки, допустимым для типов мьютексов.
Примечания
Если ожидаемое количество становится равным нулю в результате вызова этой функции, выполняется шаг завершения фазы, и эта функция не блокируется.
Если перед вызовом этой функции ожидаемое количество равно нулю, начальное ожидаемое количество для всех последующих фаз также равно нулю, а это означает, что barrier нельзя использовать повторно.
Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/thread/barrier/arrive_and_wait