다음을 통해 공유


concurrent_queue 클래스

concurrent_queue 클래스는 해당 요소에 대해 선입 선출 액세스를 허용하는 시퀀스 컨테이너 클래스입니다. pushtry_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 순간에 동시 큐가 비어 있으면 그렇지 않습니다.

설명

이 메서드는 메서드 pushtry_pop호출과 관련하여 동시성 안전하며 empty반환되는 값은 호출 스레드에서 검사할 때 올바르지 않을 수 있습니다.

get_allocator

동시 큐를 생성하는 데 사용되는 할당자의 복사본을 반환합니다. 이 메서드는 동시성 안전입니다.

allocator_type get_allocator() const;

Return Value

동시 큐를 생성하는 데 사용되는 할당자의 복사본입니다.

push

동시 큐의 비상 끝에 항목을 큐에 추가합니다. 이 메서드는 동시성 안전입니다.

void push(const T& _Src);

void push(T&& _Src);

매개 변수

_Src
큐에 추가할 항목입니다.

설명

push는 메서드pushtry_pop에 대한 호출과 관련하여 동시성에서 안전합니다empty.

try_pop

사용할 수 있는 경우 큐에서 항목을 큐에서 제거합니다. 이 메서드는 동시성 안전입니다.

bool try_pop(T& _Dest);

매개 변수

_Dest
큐에 추가된 항목을 저장할 위치에 대한 참조입니다.

Return Value

true 항목이 성공적으로 큐에서 제거되었 false 으면 그렇지 않습니다.

설명

항목이 성공적으로 큐에서 제거된 경우 매개 변수 _Dest 는 큐에서 제거된 값을 수신하고 큐에 보관된 원래 값은 제거되며 이 함수는 반환됩니다 true. 큐에서 제거할 항목이 없으면 이 함수는 차단 없이 반환 false 되고 매개 변수의 _Dest 내용은 정의되지 않습니다.

try_pop는 메서드pushtry_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는 동시성로부터 안전하지 않으며 메서드pushtry_pop에 대한 호출과 동시에 호출되는 경우 잘못된 결과를 생성할 수 있습니다empty.

참고 항목

concurrency 네임스페이스