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