Namespaces
Variants

std::experimental::flex_barrier:: arrive_and_drop

From cppreference.net
void arrive_and_drop ( ) ;
(TS параллелизма)

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

Поведение не определено, если вызывающий поток не входит в набор участвующих потоков данного flex_barrier .

Вызовы arrive_and_drop синхронизируются с началом фазы завершения flex_barrier . Если вызов блокируется, то завершение фазы завершения синхронизируется с возвратом из вызова.

Вызовы arrive_and_drop и arrive_and_wait никогда не приводят к состоянию гонки данных между собой или друг с другом.

Исключения

Ничего не выбрасывает.

Примечания

Фаза завершения будет выполнена, даже если каждый участвующий поток вызовет arrive_and_drop .

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

Смотрите также

прибыть в точку синхронизации и заблокироваться
(public member function)