PIP 5.6.1
Platform-Independent Primitives
Открытые члены | Полный список членов класса
Шаблон класса PIBlockingQueue< T >

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

#include <piblockingqueue.h>

Граф наследования:PIBlockingQueue< T >:
Inheritance graph
[см. легенду]

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

 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 в конец очереди. Подробнее...
 
take ()
 Удаляет и возвращает элемент из начала очереди, ожидая его появления без ограничения по времени.
 
dequeue ()
 Псевдоним для take().
 
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.