PIP 5.9.0
Platform-Independent Primitives
Загрузка...
Поиск...
Не найдено
Шаблон класса PIBlockingQueue< T >

Потокобезопасная очередь с поддержкой блокирующих операций - ожидает место при добавлении и ожидает элемент при получении. Подробнее...

#include <piblockingqueue.h>

Граф наследования:PIBlockingQueue< T >:

Открытые члены

 PIBlockingQueue (size_t capacity=SIZE_MAX, PIConditionVariable *cond_var_add=new PIConditionVariable(), PIConditionVariable *cond_var_rem=new PIConditionVariable())
 Создает очередь с емкостью capacity.
 PIBlockingQueue (const PIDeque< T > &other)
 Создает очередь из снимка other без синхронизации доступа к исходной очереди.
 PIBlockingQueue (PIBlockingQueue< T > &other)
 Создает очередь копированием другой блокирующей очереди с блокировкой обеих очередей.
 ~PIBlockingQueue ()
 Уничтожает очередь и принадлежащие ей переменные условия.
PIBlockingQueue< T > & put (const T &v)
 Добавляет v в конец, ожидая без ограничения по времени появления свободного места при заполненной очереди.
PIBlockingQueue< T > & enqueue (const T &v)
 Псевдоним для put().
bool offer (const T &v, PISystemTime timeout={})
 Пытается добавить v в конец очереди.
T take ()
 Удаляет и возвращает элемент из начала очереди, ожидая его появления без ограничения по времени.
T dequeue ()
 Псевдоним для take().
T poll (PISystemTime timeout={}, const T &defaultVal=T(), bool *isOk=nullptr)
 Пытается удалить и вернуть элемент из начала очереди.
size_t capacity ()
 Возвращает настроенный предел емкости.
size_t remainingCapacity ()
 Возвращает, сколько элементов еще можно вставить без блокировки в момент вызова.
size_t size ()
 Возвращает текущее количество элементов в очереди.
size_t drainTo (PIDeque< T > &other, size_t maxCount=SIZE_MAX)
 Перемещает до maxCount доступных в данный момент элементов в деку other без ожидания.
size_t drainTo (PIBlockingQueue< T > &other, size_t maxCount=SIZE_MAX)
 Перемещает до maxCount доступных в данный момент элементов в блокирующую очередь other без ожидания.

Подробное описание

template<typename T>
class PIBlockingQueue< T >

Потокобезопасная очередь с поддержкой блокирующих операций - ожидает место при добавлении и ожидает элемент при получении.

Конструктор(ы)

◆ PIBlockingQueue()

template<typename T>
PIBlockingQueue< T >::PIBlockingQueue ( size_t capacity = SIZE_MAX,
PIConditionVariable * cond_var_add = new PIConditionVariable(),
PIConditionVariable * cond_var_rem = new PIConditionVariable() )
inlineexplicit

Создает очередь с емкостью capacity.

Переданные переменные условия переходят во владение очереди и удаляются вместе с ней.

Методы

◆ offer()

template<typename T>
bool PIBlockingQueue< T >::offer ( const T & v,
PISystemTime timeout = {} )
inline

Пытается добавить v в конец очереди.

При пустом timeout метод однократно проверяет емкость и возвращается сразу.

◆ poll()

template<typename T>
T PIBlockingQueue< T >::poll ( PISystemTime timeout = {},
const T & defaultVal = T(),
bool * isOk = nullptr )
inline

Пытается удалить и вернуть элемент из начала очереди.

При пустом timeout метод проверяет очередь один раз и сразу возвращает defaultVal, если очередь пуста. \Если isOk не равен null, он получает значение true при успешном извлечении.

◆ capacity()

template<typename T>
size_t PIBlockingQueue< T >::capacity ( )
inline

Возвращает настроенный предел емкости.

Для очереди без ограничения по умолчанию это значение равно SIZE_MAX.

◆ drainTo()

template<typename T>
size_t PIBlockingQueue< T >::drainTo ( PIBlockingQueue< T > & other,
size_t maxCount = SIZE_MAX )
inline

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

Фактическое количество также ограничено оставшейся емкостью other.