std::experimental::flex_barrier:: arrive_and_wait
|
void
arrive_and_wait
(
)
;
|
(동시성 TS) | |
블록이
flex_barrier
의 동기화 지점에 도달합니다.
호출 스레드가 이
flex_barrier
의 참여 스레드 집합에 속하지 않는 경우 동작은 정의되지 않습니다.
arrive_and_wait
에 대한 호출은
flex_barrier
의 완료 단계 시작과 동기화됩니다. 완료 단계의 종료는 호출로부터의 반환과 동기화됩니다.
arrive_and_drop
및
arrive_and_wait
에 대한 호출은 서로 간에 또는 자기 자신과 데이터 경쟁을 발생시키지 않습니다.
참고 사항
스레드가 이 호출에서 반환된 직후에
arrive_and_wait()
나
arrive_and_drop()
를 호출하는 것은 안전합니다(완료 단계의 함수 객체가 0을 반환하지 않은 경우). 스레드가 다시 호출하기 전에 모든 차단된 스레드가
arrive_and_wait()
를 벗어났는지 확인할 필요는 없습니다.
완료 단계에서는
flex_barrier
가 생성될 때 지정된 함수 객체를 실행합니다. 이 함수가 -1을 반환하면 참여 스레드 집합은 변경되지 않으며, 그렇지 않으면 참여 스레드 집합은 반환값
N
과 동일한 크기를 가진 새로운 집합이 되며, 다음 동기화 지점에 도착하는
N
개의 스레드로 구성됩니다. 만약
N
==
0
인 경우,
flex_barrier
는 파기만 가능합니다.
flex_barrier
가
num_threads
개의 스레드를 위해 생성되었을 때, 초기 참여 스레드 집합은 동기화 지점에 도착하는 첫 번째
num_threads
개의 스레드입니다.
예외
아무것도 던지지 않습니다.
참고 항목
|
동기화 지점에 도달하고 현재 스레드를 참여 스레드 집합에서 제거합니다
(public member function) |