std::experimental::flex_barrier
来自 cppreference.com
< cpp | experimental
定义在头文件 <experimental/barrier> 中 |
||
class flex_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= [已删除] |
不可复制赋值 (公共成员函数) |
到达同步点并阻塞 (公共成员函数) | |
到达同步点并将当前线程从参与线程集中移除 (公共成员函数) |