Namespaces
Variants

std::experimental:: barrier

From cppreference.net
定义于头文件 <experimental/barrier>
class barrier ;
(并发技术规范)

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

屏障具有一个完成阶段,该阶段由参与线程集合中的某个线程在所有线程到达同步点时执行。 arrive_and_wait arrive_and_drop 调用与完成阶段的开始 实现同步 ;完成阶段的结束与所有因其完成而阻塞的调用返回实现同步。

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

对于为 num_threads 个线程构造的 barrier ,其参与线程集合是在构造后首批到达其同步点的前 num_threads 个线程。同一组线程(除调用 arrive_and_drop() 的线程外)必须在每个周期都到达该 barrier

成员函数

构造 barrier 对象
(公开成员函数)
销毁屏障
(公开成员函数)
operator=
[deleted]
不可复制赋值
(公开成员函数)
到达同步点并阻塞
(公开成员函数)
到达同步点并从参与线程集中移除当前线程
(公开成员函数)