std::experimental::flex_barrier
出自cppreference.com
< cpp | experimental
| 在標頭 <experimental/barrier> 定義
|
||
| |
(並發 TS) | |
類 std::experimental::flex_barrier 提供一種線程協調機制,允許參與線程的集合阻塞直至操作完成。不同於 std::experimental::latch,屏障可重用;一旦從屏障的同步點釋放參與線程,它們就能重用同一屏障。
屏障擁有完成階段,一旦參與線程集合中的所有線程都到達同步點,則由參與線程之一執行完成階段。 arrive_and_wait 和 arrive_and_drop 的調用同步於完成階段的開始;完成階段的結束同步於阻塞於其完成的所有調用的返回。
std::experimental::flex_barrier 允許用戶以一個函數對象控制完成階段。若函數對象返回 -1,則不更改參與線程集合(而下個循環中同一參與線程集合必須抵達同步點);否則參與線程集合變為擁有等於返回值 N 的新大小的集合,並由到達屏障同步點的下 N 個線程組成。
不需要此功能的用戶可以使用 std::experimental::barrier。
成員函數
構造 flex_barrier (公開成員函數) | |
銷毀 flex_barrier (公開成員函數) | |
operator= [棄置] |
非可複製賦值 (公開成員函數) |
| 到達同步點並阻塞 (公開成員函數) | |
| 到達同步點並從參與線程集合中移除當前線程 (公開成員函數) |