Класс 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
Параллельные контейнеры и объекты