Namespaces
Variants

std::experimental:: flex_barrier

From cppreference.net
헤더에 정의됨 <experimental/barrier>
class flex_barrier ;
(concurrency TS)

std::experimental::flex_barrier 클래스는 참여 스레드들이 작업이 완료될 때까지 블록할 수 있는 스레드 조정 메커니즘을 제공합니다. std::experimental::latch 와 달리, 배리어는 재사용 가능합니다; 참여 스레드들이 배리어의 동기화 지점에서 해제된 후, 동일한 배리어를 재사용할 수 있습니다.

배리어는 완료 단계를 가지며, 이는 참여 스레드 집합의 모든 스레드가 동기화 지점에 도착하면 참여 스레드 중 하나가 실행합니다. arrive_and_wait arrive_and_drop 호출은 완료 단계의 시작과 동기화됩니다 ; 완료 단계의 끝은 완료로 인해 블록되었던 모든 호출의 반환과 동기화됩니다.

std::experimental::flex_barrier 는 사용자가 함수 객체를 통해 완료 단계를 제어할 수 있도록 합니다. 함수 객체가 -1을 반환하면 참여 스레드 집합은 변경되지 않으며(동일한 참여 스레드 집합이 다음 주기에서 동기화 지점에 도달해야 함), 그렇지 않으면 참여 스레드 집합은 반환된 값 N 과 동일한 크기를 가진 새로운 집합이 되며, 이는 배리어의 동기화 지점에 도달하는 다음 N 개의 스레드로 구성됩니다.

이 기능이 필요하지 않은 사용자는 std::experimental::barrier 를 사용할 수 있습니다.

멤버 함수

flex_barrier 를 생성합니다
(public member function)
flex_barrier 를 파괴합니다
(public member function)
operator=
[deleted]
복사 할당 불가
(public member function)
동기화 지점에 도달하고 블록합니다
(public member function)
동기화 지점에 도달하고 참여 스레드 집합에서 현재 스레드를 제거합니다
(public member function)