名稱空間
變體
操作

std::experimental::barrier

來自 cppreference.com
< cpp‎ | 實驗性
在標頭檔案 <experimental/barrier> 中定義
class barrier;
(併發技術規範)

std::experimental::barrier 類提供了一種執行緒協調機制,允許一組參與執行緒阻塞,直到某個操作完成。與 std::experimental::latch 不同,barrier 是可重用的;一旦參與執行緒從 barrier 的同步點釋放,它們可以重用同一個 barrier。

barrier 有一個完成階段,該階段由其中一個參與執行緒執行,當所有參與執行緒都到達同步點時。arrive_and_waitarrive_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) [編輯]