std::experimental::barrier
来自 cppreference.com
< cpp | experimental
定义在头文件 <experimental/barrier> 中 |
||
class barrier; |
(并发 TS) | |
std::experimental::barrier
类提供了一种线程协调机制,允许一组参与线程阻塞,直到操作完成。与 std::experimental::latch 不同,屏障是可重用的;一旦参与线程从屏障的同步点释放,它们就可以重用同一个屏障。
屏障有一个完成阶段,它由参与线程中的一个线程在所有线程到达同步点后执行。arrive_and_wait
和 arrive_and_drop
调用 与 完成阶段的开始同步;完成阶段的结束与所有被其完成阻塞的调用返回同步。
对于 std::experimental::barrier
,完成阶段为空。std::experimental::flex_barrier 允许用户使用函数对象控制完成阶段。
对于为 num_threads
线程构造的 barrier
,参与线程集是构造后到达其同步点的第一个 num_threads
线程。同一组线程(除了调用 arrive_and_drop()
的线程)必须在每个循环中到达 barrier
。
[编辑] 成员函数
构造一个 barrier (公共成员函数) | |
销毁屏障 (公共成员函数) | |
operator= [已删除] |
不可复制赋值 (公共成员函数) |
到达同步点并阻塞 (公共成员函数) | |
到达同步点并从参与线程集中删除当前线程 (公共成员函数) |