![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template spsc_queueBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
Требует: | spsc_queueдолжна быть сконфигурирована таким образом, чтобы быть рассчитанной по времени компиляции |
template<typenameU> explicitspsc_queue(typenameallocator::templaterebind<U>::otherconst&);>
explicitspsc_queue(allocatorconst&);>
explicitspsc_queue(size_typeelement_count);
Построение aspsc_queue
для элементов
Требуется: | spsc_queueдолжен быть сконфигурирован таким образом, чтобы его размер соответствовал времени выполнения |
template<typenameU> spsc_queue(size_typeelement_count, typenameallocator::templaterebind<U>::otherconst&alloc);>
spsc_queue(size_typeelement_count,allocator_argconst&alloc);>
Требуется: | ] Только одна нить может толкать данные вspsc_queue | Постусловия: | объект будет толкаться вspsc_queue, если он не заполнен. |
Возвращение: | истинно, если операция толчка будет успешной. |
boolpop();
template<typenameU> boost::enable_if<typenameis_convertible<T,U>::type,bool>::type pop(U&ret);> Помещает один предмет из рингтона.
Требуется: ] Только одна нить допускается для ввода данных вspsc_queue Пост-условия: | Если рингбуфер не пуст, объект будет скопирован в рет. Возвращается: истинно, если эстрадная операция успешна, ложно, если рингтон пуст. |
---|
size_typepush(Tconst*t,size_typesize);
Выталкивает из массива t столько же объектов, сколько и пространства.
Требуется: | только одна нить позволяет нажимать данные наspsc_queue |
Возврат: |
template<size_typesize>size_typepush(Tconst(&)t);>
Выталкивает из массива t столько объектов, сколько есть свободного места.
Примечание |
---|
[[[]] Требуется: | только одному потоку разрешено подталкивать данные кspsc_queue |
Возвращает: |
template<typenameConstIterator> ConstIteratorpush(ConstIteratorbegin,ConstIteratorend);
Нажимает столько объектов из диапазона [начало, конец], сколько есть пространства.
Примечание | |
---|---|
Требуется: | только одному потоку разрешено подталкивать данные кspsc_queue |
Возвращает: | итератор к первому элементу, который не был толкнут |
size_typepop(T*ret,size_typesize);
Помещает объекты максимального размера из рингтона.
Примечание |
---|
Требуется: | только один поток допускается для ввода данных вspsc_queue |
Возврат: | количество всплывающих предметов |
template<size_typesize>size_typepop(T(&)ret);>
Помещает объекты максимального размера из<spsc_queue
>.
![]() | Примечание |
---|
Требуется:
только одна нить допускается для ввода данных вspsc_queue
Возврат:
количество всплывающих элементов
template<typenameOutputIterator> boost::disable_if<typenameis_convertible<T,OutputIterator>::type,size_type>::type pop(OutputIteratorit);
Поп-объекты к выходному итератору это
Примечание |
---|
Требуется: | только одна нить позволяет всплывать данные вspsc_queue | Возврат: |
template<typenameFunctor>boolconsume_one(Functor&f);
потребляет один элемент через функтор
выскакивает один элемент из очереди и применяет функтор на этом объекте
![]() | Примечание |
---|---|
Безопасный и неблокирующий нить, если функтор безвредный и неблокирующий |
Возврат: | верно, если один элемент был потреблен |
template<typenameFunctor>boolconsume_one(Functorconst&f);
потребляет один элемент через функтор
выскакивает один элемент из очереди и применяет функтор на этом объекте
![]() | Примечание |
---|---|
Возвращается:
истинно, если один элемент был потреблен
template<typenameFunctor>size_typeconsume_all(Functor&f);>
потребляет все элементы через функтор
последовательно выводит все элементы из очереди и применяет функтор на каждом объекте
![]() | Примечание |
---|---|
Безопасная и неблокирующая нить, если функтор безвредный и неблокирующий |
Возврат: | количество элементов, которые потребляются |
template<typenameFunctor>size_typeconsume_all(Functorconst&f);
поглощает все элементы с помощью функтора
последовательно выводит все элементы из очереди и применяет функтор на каждом объекте
![]() | Примечание |
---|
Возврат: | количество потребляемых элементов |
size_typeread_available()const;>
получить число элементов, доступных для чтения
![]() | Примечание |
---|---|
Безопасный и не требующий ожидания поток следует вызывать только из потребительской нити |
Возврат: | количество доступных элементов, которые могут быть выведены изspsc_queue |
size_typewrite_available()const;>
получить пространство записи для записи элементов
![]() | Примечание |
---|---|
Безопасный и не требующий ожидания поток должен быть вызван только из резьбы производителя |
Возвращает: | число элементов, которые могут быть перемещены вspsc_queue |
constT&front()const;
получить ссылку на элемент в передней части очереди
Наличие переднего элемента можно проверить с помощью read_available().
![]() | Примечание |
---|
Требуется: | только поглощающая нить позволяет проверить передний элемент read_available() >0. Если рингтон пуст, это неопределенное поведение, чтобы вызвать этот метод. |
Возврат: | ссылка на первый элемент в очереди |
T&front();
получить ссылку на элемент в передней части очереди
Доступность фронтального элемента можно проверить с помощью read_available().
![]() | Примечание |
---|
Требуется: | только поглощающая нить позволяет проверить передний элемент read_available() >0. Если рингбуфер пуст, это неопределенное поведение, чтобы вызвать этот метод. |
Возврат: | ссылка на первый элемент в очереди |
voidreset(void);>
перезагрузка
![]() | Примечание |
---|---|
Не безвредный |
Статья Class template spsc_queue раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |