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) |