名前空間
変種
操作

std::experimental::flex_barrier::arrive_and_wait

From cppreference.com
 
 
 
 
 
void arrive_and_wait();
(concurrency TS)

flex_barrier の同期ポイントに到達し、待機します。

呼び出し元のスレッドが、この flex_barrier の参加スレッドのセットに含まれていない場合、動作は未定義です。

arrive_and_wait への呼び出しは、flex_barrier の完了フェーズの開始と同期します。完了フェーズの完了は、呼び出しからの戻りと同期します。

arrive_and_drop および arrive_and_wait への呼び出しは、それ自体または互いにデータ競合を導入することはありません。

[編集] Notes

スレッドが、この呼び出しから戻った直後に arrive_and_wait() または arrive_and_drop() を呼び出すことは安全です(完了フェーズの関数オブジェクトがゼロを返さなかった場合)。ブロックされているすべてのスレッドが arrive_and_wait() を抜けることを確認してから、スレッドが再度呼び出す必要はありません。

完了フェーズは、flex_barrier が構築されたときに指定された関数オブジェクトを実行します。それが -1 を返した場合、参加スレッドのセットは変更されません。それ以外の場合、参加スレッドのセットは、サイズが戻り値 N に等しい新しいセットであり、同期ポイントに到達する次の N 個のスレッドで構成されます。 N == 0 の場合、flex_barrier は破棄できるだけです。

num_threads スレッド用に構築された flex_barrier の初期参加スレッドのセットは、同期ポイントに到達する最初の num_threads 個のスレッドです。

[編集] Exceptions

何もスローしません。

[編集] See also

同期点に到達し、現在のスレッドを参加スレッドのセットから削除します。
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)