Namespaces
Variants

std::experimental:: barrier

From cppreference.net
ヘッダーで定義 <experimental/barrier>
class barrier ;
(concurrency TS)

std::experimental::barrier クラスは、スレッド同期メカニズムを提供し、参加スレッド群が操作が完了するまでブロックすることを可能にします。 std::experimental::latch とは異なり、バリアは再利用可能です。参加スレッドがバリアの同期ポイントから解放された後、同じバリアを再利用できます。

バリアには完了フェーズがあり、参加スレッドの集合内のすべてのスレッドが同期ポイントに到着すると、参加スレッドの1つによって実行されます。 arrive_and_wait および arrive_and_drop 呼び出しは synchronize with 完了フェーズの開始と同期します。完了フェーズの終了は、その完了によってブロックされていたすべての呼び出しからの返却と同期します。

std::experimental::barrier の場合、完了フェーズは空です。 std::experimental::flex_barrier は関数オブジェクトを使用して完了フェーズを制御することをユーザーに許可します。

barrier num_threads 個のスレッド用に構築された場合、参加スレッドの集合は、構築後にその同期ポイントに到着した最初の num_threads 個のスレッドです。同じスレッドの集合( arrive_and_drop() を呼び出したスレッドを除く)が各サイクルで barrier に到着する必要があります。

メンバー関数

barrier を構築する
(公開メンバ関数)
バリアを破棄する
(公開メンバ関数)
operator=
[deleted]
コピー代入不可
(公開メンバ関数)
同期ポイントに到着してブロックする
(公開メンバ関数)
同期ポイントに到着し、現在のスレッドを参加スレッドの集合から削除する
(公開メンバ関数)