命名空间
变体
操作

std::experimental::flex_barrier

来自 cppreference.cn
< cpp‎ | 实验性
在头文件 <experimental/barrier> 中定义
class flex_barrier;
(并发技术规范)

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=
[已删除]
不可复制赋值
(公共成员函数) [编辑]
到达同步点并阻塞
(公共成员函数) [编辑]
到达同步点并从参与线程集合中移除当前线程
(公共成员函数) [编辑]