std::experimental::flex_barrier::arrive_and_drop

void arrive_and_drop();
(并发 TS)

到达 flex_barrier 的同步点并从参与线程集中移除当前线程。此函数是否阻塞直至完成阶段结束是未指定的。若函数阻塞,则必须选择调用方线程执行完成阶段。

若调用方线程不在此 flex_barrier 的参与线程集中,则行为未定义。

arrive_and_drop 的调用同步于 flex_barrier 完成阶段的开始。若所有调用都阻塞,则完成阶段的完成同步于从该调用返回。

调用 arrive_and_droparrive_and_wait 决不引入与自身或彼此的数据竞争。

异常

不抛出。

注意

即使每个参与线程都调用 arrive_and_drop ,也将执行完成阶段。

线程在 flex_barrier 上调用 arrive_and_drop 后,它不能调用该屏障上的任何成员函数,除了析构函数,即使完成阶段所调用的函数对象返回正值。

参阅

到达同步点并阻塞
(公开成员函数)