std::experimental:: barrier
|
헤더 파일에 정의됨
<experimental/barrier>
|
||
|
class
barrier
;
|
(concurrency TS) | |
std::experimental::barrier
클래스는 참여 스레드들이 작업이 완료될 때까지 블록할 수 있는 스레드 조정 메커니즘을 제공합니다.
std::experimental::latch
와 달리, barrier는 재사용이 가능합니다;
참여 스레드들이 barrier의 동기화 지점에서 해제된 후, 동일한 barrier를 재사용할 수 있습니다.
배리어는 완료 단계를 가지며, 이는 참여 스레드 집합의 모든 스레드가 동기화 지점에 도달하면 참여 스레드 중 하나에 의해 실행됩니다.
arrive_and_wait
와
arrive_and_drop
호출은 완료 단계의 시작과
동기화됩니다
; 완료 단계의 끝은 완료로 인해 블록되었던 모든 호출의 반환과 동기화됩니다.
std::experimental::barrier
의 경우 완료 단계는 비어 있습니다.
std::experimental::flex_barrier
은 사용자가 함수 객체를 통해 완료 단계를 제어할 수 있도록 합니다.
barrier
가
num_threads
개의 스레드용으로 생성되었을 때 참여 스레드 집합은 생성 후 동기화 지점에 도착하는 첫
num_threads
개의 스레드입니다. 동일한 스레드 집합(
arrive_and_drop()
을 호출한 스레드 제외)이 각 사이클마다
barrier
에 도착해야 합니다.
멤버 함수
barrier
를 생성한다
(public member function) |
|
|
barrier를 파괴한다
(public member function) |
|
|
operator=
[deleted]
|
복사 할당 불가
(public member function) |
|
동기화 지점에 도달하고 블록한다
(public member function) |
|
|
동기화 지점에 도달하고 참여 스레드 집합에서 현재 스레드를 제거한다
(public member function) |