std::experimental:: barrier
|
ヘッダーで定義
<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]
|
コピー代入不可
(公開メンバ関数) |
|
同期ポイントに到着してブロックする
(公開メンバ関数) |
|
|
同期ポイントに到着し、現在のスレッドを参加スレッドの集合から削除する
(公開メンバ関数) |