std::experimental::barrier
From cppreference.com
< cpp | experimental
| ヘッダ <experimental/barrier> で定義 |
||
| class barrier; |
(concurrency TS) | |
std::experimental::barrier クラスは、参加するスレッドのセットが操作の完了までブロックされることを可能にするスレッド調整メカニズムを提供します。 std::experimental::latch とは異なり、バリアは再利用可能です。参加スレッドがバリアの同期点から解放されると、同じバリアを再利用できます。
バリアには完了フェーズがあり、これは、参加スレッドのセット内のすべてスレッドが同期点に到達すると、参加スレッドの1つによって実行されます。 arrive_and_wait および arrive_and_drop の呼び出しは、完了フェーズの開始と 同期します。完了フェーズの終了は、その完了によってブロックされたすべての呼び出しからの返りと同期します。
std::experimental::barrier の場合、完了フェーズは空です。 std::experimental::flex_barrier を使用すると、ユーザーは関数オブジェクトで完了フェーズを制御できます。
num_threads スレッド用に構築された barrier の参加スレッドのセットは、構築後に同期点に到達する最初の num_threads スレッドです。同じスレッドのセット(arrive_and_drop() を呼び出したスレッドを除く)が、各サイクルで barrier に到達する必要があります。
[編集] メンバー関数
barrier を構築します。(public member function) | |
| バリアを破棄します。 (public member function) | |
| operator= [削除] |
コピー代入不可 (public member function) |
| 同期点に到達し、ブロックします。 (public member function) | |
| 同期点に到達し、現在のスレッドを参加スレッドのセットから削除します。 (public member function) |