# std::experimental::flex_barrier::flex_barrier

< cpp‎ | experimental‎ | 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` 只能被销毁。