std::experimental::flex_barrier::arrive_and_drop
来自 cppreference.cn
< cpp | experimental | flex barrier
void arrive_and_drop(); |
(concurrency TS) | |
到达 flex_barrier
的同步点,并将当前线程从参与线程集合中移除。此函数是否会阻塞直到完成阶段结束是未指定的。如果此函数阻塞,则调用线程可能会被选择执行完成阶段。
如果调用线程不在此 flex_barrier
的参与线程集合中,则行为未定义。
对 arrive_and_drop
的调用与 flex_barrier
完成阶段的开始同步。如果调用阻塞,则完成阶段的完成与从调用返回同步。
对 arrive_and_drop
和 arrive_and_wait
的调用永远不会与它们自身或彼此之间引入数据竞争。
[编辑] 异常
不抛出任何异常。
[编辑] 注释
即使每个参与线程都调用 arrive_and_drop
,完成阶段也会被执行。
在线程对 flex_barrier
调用 arrive_and_drop
之后,即使完成阶段调用的函数对象返回正值,它也不能在该栅栏上调用任何成员函数,析构函数除外。
[编辑] 参见
到达同步点并阻塞 (公共成员函数) |