Класс concurrent_priority_queueconcurrent_priority_queue Class

Класс concurrent_priority_queue — это контейнер, который позволяет нескольким потокам параллельно помещать и извлекать элементы.The concurrent_priority_queue class is a container that allows multiple threads to concurrently push and pop items. Элементы извлекаются в порядке приоритета, определяемого функтором, предоставленным в качестве аргумента шаблона.Items are popped in priority order where priority is determined by a functor supplied as a template argument.

СинтаксисSyntax

template <typename T,
    typename _Compare= std::less<T>,
    typename _Ax = std::allocator<T>
>,
    typename _Ax = std::allocator<T>> class concurrent_priority_queue;

ПараметрыParameters

TT
Тип данных элементов, хранимых в очереди с приоритетом.The data type of the elements to be stored in the priority queue.

_Compare_Compare
Тип объекта функции, который может сравнивать значения двух элементов в качестве ключей сортировки для определения их относительного порядка в очереди с приоритетом.The type of the function object that can compare two element values as sort keys to determine their relative order in the priority queue. Этот аргумент является необязательным, и в качестве значения по умолчанию используется бинарный предикат less<T>.This argument is optional and the binary predicate less<T> is the default value.

_Ax_Ax
Тип, представляющий хранимый объект распределителя, инкапсулирующий сведения о распределении и освобождении памяти для параллельной очереди с приоритетом.The type that represents the stored allocator object that encapsulates details about the allocation and deallocation of memory for the concurrent priority queue. Этот аргумент является необязательным, и значением по умолчанию является allocator<T>.This argument is optional and the default value is allocator<T>.

ЭлементыMembers

Общедоступные определения типовPublic Typedefs

ИмяName ОписаниеDescription
allocator_type Тип, представляющий класс распределителя для параллельной очереди с приоритетом.A type that represents the allocator class for the concurrent priority queue.
const_reference Тип, представляющий константную ссылку на элемент типа, хранящийся в параллельной очереди с приоритетом.A type that represents a const reference to an element of the type stored in a concurrent priority queue.
reference Тип, представляющий ссылку на элемент типа, хранящийся в параллельной очереди с приоритетом.A type that represents a reference to an element of the type stored in a concurrent priority queue.
size_type Тип, который подсчитывает число элементов в параллельной очереди с приоритетом.A type that counts the number of elements in a concurrent priority queue.
value_type Тип, представляющий тип данных, хранящихся в параллельной очереди с приоритетом.A type that represents the data type stored in a concurrent priority queue.

Открытые конструкторыPublic Constructors

nameName ОписаниеDescription
concurrent_priority_queueconcurrent_priority_queue Перегружен.Overloaded. Создает параллельную очередь с приоритетом.Constructs a concurrent priority queue.

Открытые методыPublic Methods

nameName ОписаниеDescription
пустоclear Удаляет все элементы в параллельной очереди с приоритетом.Erases all elements in the concurrent priority. Этот метод не является типобезопасным в режиме параллелизма.This method is not concurrency-safe.
emptyempty Проверяет, пуста ли параллельная очередь с приоритетом в момент, когда этот метод вызывается.Tests if the concurrent priority queue is empty at the time this method is called. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.
get_allocatorget_allocator Возвращает копию распределителя, используемого для создания параллельной очереди с приоритетом.Returns a copy of the allocator used to construct the concurrent priority queue. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.
pushpush Перегружен.Overloaded. Добавляет элемент в параллельную очередь с приоритетом.Adds an element to the concurrent priority queue. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.
sizesize Возвращает число элементов в параллельной очереди с приоритетом.Returns the number of elements in the concurrent priority queue. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.
позицииswap Меняет местами содержимое двух параллельных очередей с приоритетом.Swaps the contents of two concurrent priority queues. Этот метод не является типобезопасным в режиме параллелизма.This method is not concurrency-safe.
try_poptry_pop Удаляет и возвращает элемент наивысшего приоритета из очереди, если очередь не пуста.Removes and returns the highest priority element from the queue if the queue is non-empty. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.

Открытые операторыPublic Operators

ИмяName ОписаниеDescription
Оператор =operator= Перегружен.Overloaded. Присваивает concurrent_priority_queue этому объекту содержимое другого объекта.Assigns the contents of another concurrent_priority_queue object to this one. Этот метод не является типобезопасным в режиме параллелизма.This method is not concurrency-safe.

КомментарииRemarks

Подробные сведения о concurrent_priority_queue классе см. в разделе Parallel Containers and Objects.For detailed information on the concurrent_priority_queue class, see Parallel Containers and Objects.

Иерархия наследованияInheritance Hierarchy

concurrent_priority_queue

ТребованияRequirements

Заголовок: concurrent_priority_queue. hHeader: concurrent_priority_queue.h

Пространство имен: параллелизмNamespace: concurrency

открытымclear

Удаляет все элементы в параллельной очереди с приоритетом.Erases all elements in the concurrent priority. Этот метод не является типобезопасным в режиме параллелизма.This method is not concurrency-safe.

void clear();

КомментарииRemarks

clear не является типобезопасным.clear is not concurrency-safe. Необходимо убедиться, что никакие другие потоки не вызывают методы в очереди параллельных приоритетов при вызове этого метода.You must ensure that no other threads are invoking methods on the concurrent priority queue when you call this method. clear не освобождает память.clear does not free memory.

concurrent_priority_queueconcurrent_priority_queue

Создает параллельную очередь с приоритетом.Constructs a concurrent priority queue.

explicit concurrent_priority_queue(
    const allocator_type& _Al = allocator_type());

explicit concurrent_priority_queue(
    size_type _Init_capacity,
    const allocator_type& _Al = allocator_type());

template<typename _InputIterator>
concurrent_priority_queue(_InputIterator _Begin,
    _InputIterator _End,
    const allocator_type& _Al = allocator_type());

concurrent_priority_queue(
    const concurrent_priority_queue& _Src);

concurrent_priority_queue(
    const concurrent_priority_queue& _Src,
    const allocator_type& _Al);

concurrent_priority_queue(
    concurrent_priority_queue&& _Src);

concurrent_priority_queue(
    concurrent_priority_queue&& _Src,
    const allocator_type& _Al);

ПараметрыParameters

_InputIterator_InputIterator
Тип итератора ввода.The type of the input iterator.

_Al_Al
Класс распределителя для использования с данным объектом.The allocator class to use with this object.

_Init_capacity_Init_capacity
Начальная производительность объекта concurrent_priority_queue.The initial capacity of the concurrent_priority_queue object.

_Begin_Begin
Положение первого элемента в диапазоне копируемых элементов.The position of the first element in the range of elements to be copied.

_End_End
Положение первого элемента после диапазона копируемых элементов.The position of the first element beyond the range of elements to be copied.

_Src_Src
Исходный объект concurrent_priority_queue для копирования или перемещения элементов.The source concurrent_priority_queue object to copy or move elements from.

КомментарииRemarks

Все конструкторы хранят объект распределителя _Al и инициализируют очередь приоритетов.All constructors store an allocator object _Al and initialize the priority queue.

Первый конструктор указывает пустую очередь начального приоритета и при необходимости задает распределитель.The first constructor specifies an empty initial priority queue and optionally specifies an allocator.

Второй конструктор указывает очередь приоритетов с начальной емкостью _Init_capacity и при необходимости задает распределитель.The second constructor specifies a priority queue with an initial capacity _Init_capacity and optionally specifies an allocator.

Третий конструктор указывает значения, предоставляемые диапазоном итератора [ _Begin , _End ), и при необходимости задает распределитель.The third constructor specifies values supplied by the iterator range [ _Begin, _End) and optionally specifies an allocator.

Четвертый и пятый конструкторы указывают копию очереди приоритетов _Src .The fourth and fifth constructors specify a copy of the priority queue _Src.

Шестой и седьмой конструкторы указывают перемещение очереди приоритетов _Src .The sixth and seventh constructors specify a move of the priority queue _Src.

указаноempty

Проверяет, пуста ли параллельная очередь с приоритетом в момент, когда этот метод вызывается.Tests if the concurrent priority queue is empty at the time this method is called. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.

bool empty() const;

Возвращаемое значениеReturn Value

true значение, если очередь приоритетов была пустой в момент вызова функции, false в противном случае.true if the priority queue was empty at the moment the function was called, false otherwise.

get_allocatorget_allocator

Возвращает копию распределителя, используемого для создания параллельной очереди с приоритетом.Returns a copy of the allocator used to construct the concurrent priority queue. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.

allocator_type get_allocator() const;

Возвращаемое значениеReturn Value

Копия распределителя, используемая для создания concurrent_priority_queue объекта.A copy of the allocator used to construct the concurrent_priority_queue object.

Оператор =operator=

Присваивает concurrent_priority_queue этому объекту содержимое другого объекта.Assigns the contents of another concurrent_priority_queue object to this one. Этот метод не является типобезопасным в режиме параллелизма.This method is not concurrency-safe.

concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);

concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);

ПараметрыParameters

_Src_Src
Исходный объект concurrent_priority_queue.The source concurrent_priority_queue object.

Возвращаемое значениеReturn Value

Ссылка на этот concurrent_priority_queue объект.A reference to this concurrent_priority_queue object.

распространениеpush

Добавляет элемент в параллельную очередь с приоритетом.Adds an element to the concurrent priority queue. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.

void push(const value_type& _Elem);

void push(value_type&& _Elem);

ПараметрыParameters

_Elem_Elem
Элемент, добавляемый в очередь параллельных приоритетов.The element to be added to the concurrent priority queue.

изменятьsize

Возвращает число элементов в параллельной очереди с приоритетом.Returns the number of elements in the concurrent priority queue. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.

size_type size() const;

Возвращаемое значениеReturn Value

Число элементов в этом concurrent_priority_queue объекте.The number of elements in this concurrent_priority_queue object.

КомментарииRemarks

Возвращаемый размер гарантированно включает все элементы, добавленные с помощью вызовов функции push .The returned size is guaranteed to include all elements added by calls to the function push. Однако он может не отражать результаты ожидающих параллельных операций.However, it may not reflect results of pending concurrent operations.

позицииswap

Меняет местами содержимое двух параллельных очередей с приоритетом.Swaps the contents of two concurrent priority queues. Этот метод не является типобезопасным в режиме параллелизма.This method is not concurrency-safe.

void swap(concurrent_priority_queue& _Queue);

ПараметрыParameters

_Queue_Queue
Объект concurrent_priority_queue для обмена содержимым.The concurrent_priority_queue object to swap contents with.

try_poptry_pop

Удаляет и возвращает элемент наивысшего приоритета из очереди, если очередь не пуста.Removes and returns the highest priority element from the queue if the queue is non-empty. Этот метод является типобезопасным в режиме параллелизма.This method is concurrency-safe.

bool try_pop(reference _Elem);

ПараметрыParameters

_Elem_Elem
Ссылка на переменную, которая будет заполнена элементом с наивысшим приоритетом, если очередь не пуста.A reference to a variable that will be populated with the highest priority element, if the queue is non-empty.

Возвращаемое значениеReturn Value

true , если значение было извлечено, false в противном случае.true if a value was popped, false otherwise.

См. также разделSee also

Пространство имен Concurrencyconcurrency Namespace
Параллельные контейнеры и объектыParallel Containers and Objects