Namespaces
Variants

std::experimental:: barrier

From cppreference.net
헤더 파일에 정의됨 <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)