std::experimental::flex_barrier:: arrive_and_drop
|
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) |