std::experimental::flex_barrier::arrive_and_wait
| std::future 扩展 | ||||
| 闩和屏障 | ||||
| 原子智能指针 | ||||
|
flex_barrier::arrive_and_wait
|
||||
|
void
arrive_and_wait();
|
(并发 TS) | |
阻塞并到达 flex_barrier 的同步点。
若调用线程不在此 flex_barrier 的参与线程集中,则行为未定义。
对 arrive_and_wait 的调用同步于 flex_barrier
完成阶段的开始。完成阶段的完成同步于从调用返回。
调用 arrive_and_drop 和 arrive_and_wait
决不引入与自身或彼此的数据竞争。
注意
从此调用返回时,线程立即调用 arrive_and_wait() 或
arrive_and_drop()
是安全的(只要完成阶段的函数对象不返回零)。不需要确保所有阻塞线程都在一个线程再次调用它时已退出
arrive_and_wait() 。
完成阶段执行构造 flex_barrier 时指定的函数对象。若它返回 -1
,则不更改参与线程集(而下个循环中同一参与线程集必须抵达同步点);否则参与线程集变为拥有等于返回值 N
的新大小的集合,并由到达屏障同步点的下 N 个线程组成。若 N == 0 ,则
flex_barrier 只能被销毁。
为 num_threads 个线程构造的 flex_barrier 的的初始参与线程集是首
num_threads 个到达其同步点的线程。
异常
不抛出。
参阅
| 到达同步点并从参与线程集中移除当前线程 (公开成员函数) |