std::experimental::barrier
來自 cppreference.com
在標頭檔案 <experimental/barrier> 中定義 |
||
class barrier; |
(併發技術規範) | |
std::experimental::barrier
類提供了一種執行緒協調機制,允許一組參與執行緒阻塞,直到某個操作完成。與 std::experimental::latch 不同,barrier 是可重用的;一旦參與執行緒從 barrier 的同步點釋放,它們可以重用同一個 barrier。
barrier 有一個完成階段,該階段由其中一個參與執行緒執行,當所有參與執行緒都到達同步點時。arrive_and_wait
和 arrive_and_drop
呼叫與完成階段的開始進行同步;完成階段的結束與所有被其完成阻塞的呼叫返回進行同步。
對於 std::experimental::barrier
,完成階段為空。std::experimental::flex_barrier 允許使用者透過函式物件控制完成階段。
為 num_threads
個執行緒構造的 barrier
的參與執行緒集合是構造後首先到達其同步點的 num_threads
個執行緒。在每個迴圈中,相同的執行緒集合(除了呼叫過 arrive_and_drop()
的執行緒)必須到達 barrier
。
[編輯] 成員函式
構造一個 barrier (public member function) | |
銷燬 barrier (public member function) | |
operator= [已刪除] |
不可複製賦值 (public member function) |
到達同步點並阻塞 (public member function) | |
到達同步點並從參與執行緒集合中移除當前執行緒 (public member function) |