std::experimental:: flex_barrier
|
定义于头文件
<experimental/barrier>
|
||
|
class
flex_barrier
;
|
(并发技术规范) | |
类
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=
[deleted]
|
不可复制赋值
(公开成员函数) |
|
到达同步点并阻塞
(公开成员函数) |
|
|
到达同步点并从参与线程集中移除当前线程
(公开成员函数) |