std::experimental::flex_barrier::flex_barrier

explicit flex_barrier( std::ptrdiff_t num_threads );
(1) (并发 TS)
template < class F >
flex_barrier( std::ptrdiff_t num_threads, F completion );
(2) (并发 TS)
flex_barrier( const flex_barrier & ) = delete;
(3) (并发 TS)
1) 拥有同 flex_barrier(num_threads, c) 的效果,其中 c可调用 (Callable) 对象,其调用返回 -1 且无副效应。
2)num_threads 个参与线程构造 flex_barrier ,将 completion 用于完成阶段。参与线程集是首 num_threads 个到达同步点的线程。
3) 复制构造函数被删除; flex_barrier 不可复制。

参数

num_threads - flex_barrier 的参与线程数;必须非负
completion - 控制完成阶段的函数对象;必须以无参数可调用 (Callable) 并拥有 std::ptrdiff_t 返回类型,调用时必须返回不小于 -1 的值且不抛出异常。
类型要求
-
F 必须满足可复制构造 (CopyConstructible) 的要求。

注意

num_threads 为零,则参与线程集为空,而 flex_barrier 只能被销毁。