std::experimental::flex_barrier::arrive_and_drop
From cppreference.com
< cpp | experimental | flex barrier
| void arrive_and_drop(); |
(concurrency TS) | |
flex_barrier の同期点に到達し、現在のスレッドを参加スレッドのセットから削除します。この関数が完了フェーズの終了までブロックするかどうかは未指定です。関数がブロックする場合、呼び出しスレッドは完了フェーズの実行に選択される可能性があります。
呼び出しスレッドがこの flex_barrier の参加スレッドのセットに含まれていない場合、動作は未定義です。
arrive_and_drop への呼び出しは、flex_barrier の完了フェーズの開始と同期します。呼び出しがブロックする場合、完了フェーズの完了は、呼び出しからの戻りと同期します。
arrive_and_drop および arrive_and_wait への呼び出しは、それ自体または互いにデータ競合を導入することはありません。
[編集] 例外
何もスローしません。
[編集] メモ
参加スレッドがすべて arrive_and_drop を呼び出した場合でも、完了フェーズは実行されます。
スレッドが flex_barrier に対して arrive_and_drop を呼び出した後、完了フェーズによって呼び出された関数オブジェクトが正の値を返した場合でも、デストラクタ以外のそのバリアのメンバ関数を呼び出すことはできません。
[編集] 関連項目
| 同期点に到達し、ブロックします。 (public member function) |