Namespaces
Variants

std::experimental:: barrier

From cppreference.net
Определено в заголовочном файле <experimental/barrier>
class barrier ;
(concurrency TS)

Класс std::experimental::barrier предоставляет механизм координации потоков, который позволяет набору участвующих потоков блокироваться до завершения операции. В отличие от std::experimental::latch , барьеры являются повторно используемыми; как только участвующие потоки освобождаются из точки синхронизации барьера, они могут повторно использовать тот же барьер.

Барьер имеет фазу завершения, которая выполняется одним из участвующих потоков после того, как все потоки в наборе участвующих потоков достигают точки синхронизации. Вызовы arrive_and_wait и arrive_and_drop синхронизируются с началом фазы завершения; конец фазы завершения синхронизируется с возвратом из всех вызовов, заблокированных до её завершения.

Для std::experimental::barrier фаза завершения пуста. std::experimental::flex_barrier позволяет пользователю управлять фазой завершения с помощью функционального объекта.

Набор участвующих потоков для barrier , созданного для num_threads потоков, представляет собой первые num_threads потоков, достигающих его точки синхронизации после создания. Один и тот же набор потоков (за исключением потоков, вызвавших arrive_and_drop() ) должен достигать barrier каждый цикл.

Функции-члены

создает barrier
(публичная функция-член)
уничтожает барьер
(публичная функция-член)
operator=
[deleted]
не копируемый оператор присваивания
(публичная функция-член)
прибывает в точку синхронизации и блокируется
(публичная функция-член)
прибывает в точку синхронизации и удаляет текущий поток из набора участвующих потоков
(публичная функция-член)