std::experimental::barrier::arrive_and_wait
From cppreference.com
< cpp | experimental | barrier
| void arrive_and_wait(); |
(concurrency TS) | |
バリアの同期ポイントで待機し、到達したことを通知します。
呼び出し元のスレッドがこのバリアの参加スレッドのセットに含まれていない場合、動作は未定義です。
arrive_and_wait への呼び出しは、バリアの完了フェーズの開始と同期します。完了フェーズの完了は、呼び出しからの戻りと同期します。
arrive_and_drop および arrive_and_wait への呼び出しは、それ自体または互いにデータ競合を導入することはありません。
[編集] 注釈
スレッドはこの呼び出しから戻った直後に arrive_and_wait() または arrive_and_drop() を呼び出しても安全です。スレッドが再度呼び出す前に、すべてのブロックされたスレッドが arrive_and_wait() を終了したことを確認する必要はありません。
num_threads スレッド用に構築された barrier の参加スレッドのセットは、同期ポイントに到達した最初の num_threads です。このセットは、arrive_and_drop() の呼び出しによってセットから削除されたスレッドを除き、サイクルごとに変更されません。
[編集] 例外
何もスローしません。
[編集] 関連項目
| 同期点に到達し、現在のスレッドを参加スレッドのセットから削除します。 (public member function) |