std::experimental:: barrier
|
Определено в заголовочном файле
<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]
|
не копируемый оператор присваивания
(публичная функция-член) |
|
прибывает в точку синхронизации и блокируется
(публичная функция-член) |
|
|
прибывает в точку синхронизации и удаляет текущий поток из набора участвующих потоков
(публичная функция-член) |