concurrent_queue 클래스
concurrent_queue
클래스는 해당 요소에 대해 선입 선출 액세스를 허용하는 시퀀스 컨테이너 클래스입니다. push
및 try_pop
과 같은 동시성으로부터 안전한 작업의 제한된 집합을 사용할 수 있게 합니다. 여기서 동시성 안전은 포인터 또는 반복기가 항상 유효함을 의미합니다. 요소 초기화 또는 특정 순회 순서를 보장하지 않습니다.
구문
template<typename T, class _Ax>
class concurrent_queue: public ::Concurrency::details::_Concurrent_queue_base_v4;
매개 변수
T
큐에 저장할 요소의 데이터 형식입니다.
_도끼
이 동시 큐에 대한 메모리 할당 및 할당 취소에 대한 세부 정보를 캡슐화하는 저장된 할당자 개체를 나타내는 형식입니다. 이 인수는 선택 사항이며 기본값은 allocator<T>
입니다.
멤버
공용 Typedefs
속성 | 설명 |
---|---|
allocator_type |
동시 큐의 할당자 클래스를 나타내는 형식입니다. |
const_iterator |
동시 큐의 요소에 대해 스레드로부터 안전하지 않은 const 반복기를 나타내는 형식입니다. |
const_reference |
작업을 읽고 수행하기 const 위해 const 동시 큐에 저장된 요소에 대한 참조를 제공하는 형식입니다. |
difference_type |
동시 큐의 두 요소 간에 서명된 거리를 제공하는 형식입니다. |
iterator |
동시 큐의 요소에 대해 스레드로부터 안전하지 않은 반복기를 나타내는 형식입니다. |
reference |
동시 큐에 저장된 요소에 대한 참조를 제공하는 형식입니다. |
size_type |
동시 큐의 요소 수를 계산하는 형식입니다. |
value_type |
동시 큐에 저장된 데이터 형식을 나타내는 형식입니다. |
공용 생성자
속성 | 설명 |
---|---|
concurrent_queue | 오버로드됨. 동시 큐를 생성합니다. |
~concurrent_queue 소멸자 | 동시 큐를 삭제합니다. |
공용 메서드
이름 | 설명 |
---|---|
clear | 현재 큐에 넣은 요소를 삭제하여 동시 큐를 지웁니다. 이 메서드는 동시성이 안전하지 않습니다. |
empty | 이 메서드가 호출될 때 동시 큐가 비어 있는지 테스트합니다. 이 메서드는 동시성 안전입니다. |
get_allocator | 동시 큐를 생성하는 데 사용되는 할당자의 복사본을 반환합니다. 이 메서드는 동시성 안전입니다. |
push | 오버로드됨. 동시 큐의 비상 끝에 항목을 큐에 추가합니다. 이 메서드는 동시성 안전입니다. |
try_pop | 사용할 수 있는 경우 큐에서 항목을 큐에서 제거합니다. 이 메서드는 동시성 안전입니다. |
unsafe_begin | 오버로드됨. 형식 iterator 의 반복기 또는 const_iterator 동시 큐의 시작 부분을 반환합니다. 이 메서드는 동시성이 안전하지 않습니다. |
unsafe_end | 오버로드됨. 형식 iterator 의 반복기를 반환하거나 const_iterator 동시 큐의 끝에 반환합니다. 이 메서드는 동시성이 안전하지 않습니다. |
unsafe_size | 큐의 항목 수를 반환합니다. 이 메서드는 동시성이 안전하지 않습니다. |
설명
자세한 내용은 병렬 컨테이너 및 개체를 참조 하세요.
상속 계층 구조
concurrent_queue
요구 사항
헤더: concurrent_queue.h
네임스페이스: 동시성
clear
현재 큐에 넣은 요소를 삭제하여 동시 큐를 지웁니다. 이 메서드는 동시성이 안전하지 않습니다.
void clear();
concurrent_queue
동시 큐를 생성합니다.
explicit concurrent_queue(
const allocator_type& _Al = allocator_type());
concurrent_queue(
const concurrent_queue& _OtherQ,
const allocator_type& _Al = allocator_type());
concurrent_queue(
concurrent_queue&& _OtherQ,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_queue(_InputIterator _Begin,
_InputIterator _End);
매개 변수
_InputIterator
값 범위를 지정하는 입력 반복기의 형식입니다.
_알
이 개체에 사용할 할당자 클래스입니다.
_OtherQ
요소를 복사해 오거나 이동해 올 소스 concurrent_queue
개체입니다.
_시작되다
복사할 요소의 범위에서 첫 번째 요소의 위치입니다.
_끝
복사할 요소의 범위를 벗어난 첫 번째 요소의 위치입니다.
설명
모든 생성자는 할당자 개체 _Al
를 저장하고 큐를 초기화합니다.
첫 번째 생성자는 빈 초기 큐를 지정하고 사용할 할당자 형식을 명시적으로 지정합니다.
두 번째 생성자는 동시 큐 _OtherQ
의 복사본을 지정합니다.
세 번째 생성자는 동시 큐 _OtherQ
의 이동을 지정합니다.
네 번째 생성자는 반복기 범위 [ _Begin
, _End
)에서 제공하는 값을 지정합니다.
~concurrent_queue
동시 큐를 삭제합니다.
~concurrent_queue();
empty
이 메서드가 호출될 때 동시 큐가 비어 있는지 테스트합니다. 이 메서드는 동시성 안전입니다.
bool empty() const;
Return Value
true
우리가 살펴본 false
순간에 동시 큐가 비어 있으면 그렇지 않습니다.
설명
이 메서드는 메서드 push
try_pop
호출과 관련하여 동시성 안전하며 empty
반환되는 값은 호출 스레드에서 검사할 때 올바르지 않을 수 있습니다.
get_allocator
동시 큐를 생성하는 데 사용되는 할당자의 복사본을 반환합니다. 이 메서드는 동시성 안전입니다.
allocator_type get_allocator() const;
Return Value
동시 큐를 생성하는 데 사용되는 할당자의 복사본입니다.
push
동시 큐의 비상 끝에 항목을 큐에 추가합니다. 이 메서드는 동시성 안전입니다.
void push(const T& _Src);
void push(T&& _Src);
매개 변수
_Src
큐에 추가할 항목입니다.
설명
push
는 메서드push
try_pop
에 대한 호출과 관련하여 동시성에서 안전합니다empty
.
try_pop
사용할 수 있는 경우 큐에서 항목을 큐에서 제거합니다. 이 메서드는 동시성 안전입니다.
bool try_pop(T& _Dest);
매개 변수
_Dest
큐에 추가된 항목을 저장할 위치에 대한 참조입니다.
Return Value
true
항목이 성공적으로 큐에서 제거되었 false
으면 그렇지 않습니다.
설명
항목이 성공적으로 큐에서 제거된 경우 매개 변수 _Dest
는 큐에서 제거된 값을 수신하고 큐에 보관된 원래 값은 제거되며 이 함수는 반환됩니다 true
. 큐에서 제거할 항목이 없으면 이 함수는 차단 없이 반환 false
되고 매개 변수의 _Dest
내용은 정의되지 않습니다.
try_pop
는 메서드push
try_pop
에 대한 호출과 관련하여 동시성에서 안전합니다empty
.
unsafe_begin
형식 iterator
의 반복기 또는 const_iterator
동시 큐의 시작 부분을 반환합니다. 이 메서드는 동시성이 안전하지 않습니다.
iterator unsafe_begin();
const_iterator unsafe_begin() const;
Return Value
동시 큐 개체의 시작 부분 또는 const_iterator
형식 iterator
의 반복기입니다.
설명
클래스의 반복기는 concurrent_queue
속도가 느리고 다른 큐 작업과 관련하여 동시성이 안전하지 않으므로 주로 디버깅을 위한 것입니다.
unsafe_end
형식 iterator
의 반복기를 반환하거나 const_iterator
동시 큐의 끝에 반환합니다. 이 메서드는 동시성이 안전하지 않습니다.
iterator unsafe_end();
const_iterator unsafe_end() const;
Return Value
동시 큐의 끝 또는 const_iterator
형식 iterator
의 반복기입니다.
설명
클래스의 반복기는 concurrent_queue
속도가 느리고 다른 큐 작업과 관련하여 동시성이 안전하지 않으므로 주로 디버깅을 위한 것입니다.
unsafe_size
큐의 항목 수를 반환합니다. 이 메서드는 동시성이 안전하지 않습니다.
size_type unsafe_size() const;
Return Value
동시 큐의 크기입니다.
설명
unsafe_size
는 동시성로부터 안전하지 않으며 메서드push
try_pop
에 대한 호출과 동시에 호출되는 경우 잘못된 결과를 생성할 수 있습니다empty
.