std::experimental:: flex_barrier
|
헤더에 정의됨
<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) |