命名空间
变体
操作

std::experimental::barrier

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

std::experimental::barrier 类提供了一种线程协调机制,允许一组参与线程阻塞,直到某个操作完成。与 std::experimental::latch 不同,barrier 是可重用的;一旦参与线程从 barrier 的同步点释放,它们可以重用同一个 barrier。

barrier 有一个完成阶段,该阶段由其中一个参与线程执行,当所有参与线程都到达同步点时。arrive_and_waitarrive_and_drop 调用与完成阶段的开始进行同步;完成阶段的结束与所有被其完成阻塞的调用返回进行同步。

对于 std::experimental::barrier,完成阶段为空。std::experimental::flex_barrier 允许用户通过函数对象控制完成阶段。

num_threads 个线程构造的 barrier 的参与线程集合是构造后首先到达其同步点的 num_threads 个线程。在每个循环中,相同的线程集合(除了调用过 arrive_and_drop() 的线程)必须到达 barrier

[编辑] 成员函数

构造一个 barrier
(public member function) [编辑]
销毁 barrier
(public member function) [编辑]
operator=
[已删除]
不可复制赋值
(public member function) [编辑]
到达同步点并阻塞
(public member function) [编辑]
到达同步点并从参与线程集合中移除当前线程
(public member function) [编辑]