std::experimental::flex_barrier

出自cppreference.com
在標頭 <experimental/barrier> 定義
class flex_barrier;
(並發 TS)

std::experimental::flex_barrier 提供一種線程協調機制,允許參與線程的集合阻塞直至操作完成。不同於 std::experimental::latch,屏障可重用;一旦從屏障的同步點釋放參與線程,它們就能重用同一屏障。

屏障擁有完成階段,一旦參與線程集合中的所有線程都到達同步點,則由參與線程之一執行完成階段。 arrive_and_waitarrive_and_drop 的調用同步於完成階段的開始;完成階段的結束同步於阻塞於其完成的所有調用的返回。

std::experimental::flex_barrier 允許用戶以一個函數對象控制完成階段。若函數對象返回 -1,則不更改參與線程集合(而下個循環中同一參與線程集合必須抵達同步點);否則參與線程集合變為擁有等於返回值 N 的新大小的集合,並由到達屏障同步點的下 N 個線程組成。

不需要此功能的用戶可以使用 std::experimental::barrier

成員函數

構造 flex_barrier
(公開成員函數) [編輯]
銷毀 flex_barrier
(公開成員函數) [編輯]
operator=
[棄置]
非可複製賦值
(公開成員函數) [編輯]
到達同步點並阻塞
(公開成員函數) [編輯]
到達同步點並從參與線程集合中移除當前線程
(公開成員函數) [編輯]