std::experimental::flex_barrier::arrive_and_wait
來自 cppreference.com
< cpp | experimental | flex_barrier
| void arrive_and_wait(); |
(併發技術規範) | |
阻塞並抵達 flex_barrier 的同步點。
如果呼叫執行緒不在此 flex_barrier 的參與執行緒集中,則行為未定義。
對 arrive_and_wait 的呼叫與 flex_barrier 的完成階段的開始同步。完成階段的完成與呼叫的返回同步。
對 arrive_and_drop 和 arrive_and_wait 的呼叫永遠不會相互或與自身引入資料競爭。
[編輯] 註解
執行緒在此呼叫返回後立即呼叫 arrive_and_wait() 或 arrive_and_drop() 是安全的(前提是完成階段的函式物件未返回零)。無需確保所有被阻塞的執行緒都已退出 arrive_and_wait(),然後執行緒才能再次呼叫它。
完成階段執行在構造 flex_barrier 時指定的函式物件。如果它返回 -1,則參與執行緒集保持不變;否則,參與執行緒集是一個新集,其大小等於返回值 N,並且由接下來抵達同步點的 N 個執行緒組成。如果 N == 0,則 flex_barrier 只能被銷燬。
為 num_threads 個執行緒構造的 flex_barrier 的初始參與執行緒集是前 num_threads 個抵達其同步點的執行緒。
[編輯] 異常
不丟擲任何異常。
[編輯] 參見
| 到達同步點並從參與執行緒集合中移除當前執行緒 (public member function) |