Поделиться через


Класс concurrent_priority_queue

Класс concurrent_priority_queue — это контейнер, который позволяет нескольким потокам параллельно помещать и извлекать элементы. Элементы извлекаются в порядке приоритета, определяемого функтором, предоставленным в качестве аргумента шаблона.

Синтаксис

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

Параметры

T
Тип данных элементов, хранимых в очереди с приоритетом.

_Сравнивать
Тип объекта функции, который может сравнивать значения двух элементов в качестве ключей сортировки для определения их относительного порядка в очереди с приоритетом. Этот аргумент является необязательным, и в качестве значения по умолчанию используется бинарный предикат less<T>.

_Топор
Тип, представляющий хранимый объект распределителя, инкапсулирующий сведения о распределении и освобождении памяти для параллельной очереди с приоритетом. Этот аргумент является необязательным, и значением по умолчанию является allocator<T>.

Участники

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

Имя Описание
allocator_type Тип, представляющий класс распределителя для параллельной очереди с приоритетом.
const_reference Тип, представляющий константную ссылку на элемент типа, хранящийся в параллельной очереди с приоритетом.
reference Тип, представляющий ссылку на элемент типа, хранящийся в параллельной очереди с приоритетом.
size_type Тип, который подсчитывает число элементов в параллельной очереди с приоритетом.
value_type Тип, представляющий тип данных, хранящихся в параллельной очереди с приоритетом.

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

Имя Описание
concurrent_priority_queue Перегружен. Создает параллельную очередь с приоритетом.

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

Имя Описание
пусто Удаляет все элементы в параллельной очереди с приоритетом. Этот метод не является безопасным для параллелизма.
empty Проверяет, пуста ли параллельная очередь с приоритетом в момент, когда этот метод вызывается. Этот метод является безопасным для параллелизма.
get_allocator Возвращает копию распределителя, используемого для создания параллельной очереди с приоритетом. Этот метод является безопасным для параллелизма.
push Перегружен. Добавляет элемент в параллельную очередь с приоритетом. Этот метод является безопасным для параллелизма.
size Возвращает число элементов в параллельной очереди с приоритетом. Этот метод является безопасным для параллелизма.
swap Меняет местами содержимое двух параллельных очередей с приоритетом. Этот метод не является безопасным для параллелизма.
try_pop Удаляет и возвращает элемент наивысшего приоритета из очереди, если очередь не пуста. Этот метод является безопасным для параллелизма.

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

Имя Описание
operator= Перегружен. Назначает содержимое другого concurrent_priority_queue объекта этому объекту. Этот метод не является безопасным для параллелизма.

Замечания

Подробные сведения о классе см. в разделе "Параллельные concurrent_priority_queue контейнеры и объекты".

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

concurrent_priority_queue

Требования

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

Пространство имен: concurrency

clear

Удаляет все элементы в параллельной очереди с приоритетом. Этот метод не является безопасным для параллелизма.

void clear();

Замечания

clear не является безопасным для параллелизма. При вызове этого метода другие потоки не вызывают методы в параллельной очереди приоритета. clear не освобождает память.

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);

Параметры

_InputIterator
Тип итератора ввода.

_Аль
Класс распределителя для использования с данным объектом.

_Init_capacity
Начальная производительность объекта concurrent_priority_queue.

_Начинать
Положение первого элемента в диапазоне копируемых элементов.

_Конец
Положение первого элемента после диапазона копируемых элементов.

_Src
Исходный объект concurrent_priority_queue для копирования или перемещения элементов.

Замечания

Все конструкторы хранят объект _Al распределителя и инициализировать очередь приоритетов.

Первый конструктор задает пустую очередь начального приоритета и при необходимости задает распределитель.

Второй конструктор задает очередь приоритета с начальной емкостью _Init_capacity и при необходимости задает распределитель.

Третий конструктор задает значения, предоставленные диапазоном итератора [ _Begin, _End) и при необходимости задает распределитель.

Четвертый и пятый конструкторы указывают копию очереди _Srcприоритетов.

Шестой и седьмой конструкторы указывают перемещение очереди _Srcприоритетов.

empty

Проверяет, пуста ли параллельная очередь с приоритетом в момент, когда этот метод вызывается. Этот метод является безопасным для параллелизма.

bool empty() const;

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

true Значение , если очередь приоритета была пуста на момент вызова функции, false в противном случае.

get_allocator

Возвращает копию распределителя, используемого для создания параллельной очереди с приоритетом. Этот метод является безопасным для параллелизма.

allocator_type get_allocator() const;

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

Копия распределителя, используемая для создания concurrent_priority_queue объекта.

operator=

Назначает содержимое другого concurrent_priority_queue объекта этому объекту. Этот метод не является безопасным для параллелизма.

concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);

concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);

Параметры

_Src
Исходный объект concurrent_priority_queue.

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

Ссылка на этот concurrent_priority_queue объект.

отправка

Добавляет элемент в параллельную очередь с приоритетом. Этот метод является безопасным для параллелизма.

void push(const value_type& _Elem);

void push(value_type&& _Elem);

Параметры

_Elem
Элемент, добавляемый в параллельную очередь приоритета.

size

Возвращает число элементов в параллельной очереди с приоритетом. Этот метод является безопасным для параллелизма.

size_type size() const;

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

Количество элементов в этом concurrent_priority_queue объекте.

Замечания

Возвращаемый размер гарантированно включает все элементы, добавленные вызовами функции push. Однако он может не отражать результаты ожидающих параллельных операций.

swap

Меняет местами содержимое двух параллельных очередей с приоритетом. Этот метод не является безопасным для параллелизма.

void swap(concurrent_priority_queue& _Queue);

Параметры

_Очередь
Объект concurrent_priority_queue для замены содержимого.

try_pop

Удаляет и возвращает элемент наивысшего приоритета из очереди, если очередь не пуста. Этот метод является безопасным для параллелизма.

bool try_pop(reference _Elem);

Параметры

_Elem
Ссылка на переменную, которая будет заполнена элементом с наивысшим приоритетом, если очередь не пуста.

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

true Значение, если значение было порвано, false в противном случае.

См. также

Пространство имен concurrency
Параллельные контейнеры и объекты