std::experimental::flex_barrier:: flex_barrier
From cppreference.net
<
cpp
|
experimental
|
flex barrier
|
explicit
flex_barrier
(
std::
ptrdiff_t
num_threads
)
;
|
(1) | (concurrency TS) |
|
template
<
class
F
>
flex_barrier ( std:: ptrdiff_t num_threads, F completion ) ; |
(2) | (concurrency TS) |
|
flex_barrier
(
const
flex_barrier
&
)
=
delete
;
|
(3) | (concurrency TS) |
1)
다음과 같은 효과를 가집니다:
flex_barrier
(
num_threads, c
)
, 여기서
c
는
Callable
객체로, 호출 시 -1을 반환하고 부수 효과(side effects)가 없습니다.
2)
flex_barrier
를
num_threads
개의 참여 스레드에 대해 생성하며, 완료 단계에는
completion
을 사용합니다. 참여 스레드 집합은 동기화 지점에 도착하는 첫 번째
num_threads
개의 스레드로 구성됩니다.
3)
복사 생성자가 삭제됨;
flex_barrier
는 복사할 수 없습니다.
매개변수
| num_threads | - |
flex_barrier
에 참여하는 스레드의 수; 음수가 아니어야 함
|
| completion | - | 완료 단계를 제어하는 함수 객체; 인수 없이 호출 가능해야 하며 반환 타입은 std::ptrdiff_t 여야 하고, 호출 시 -1 이상의 값을 반환해야 하며 예외를 던지지 않아야 함 |
| 타입 요구사항 | ||
-
F
는
CopyConstructible
요구사항을 충족해야 함.
|
||
참고 사항
만약 num_threads 가 0이면, 참여 스레드 집합이 비어 있으며, flex_barrier는 오직 파괴만 가능합니다.