|  | 
|      | 
|  | 
| 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 столько же объектов, сколько и пространства.
![[Note]](/img/note.png)
| Требуется: | только одна нить позволяет нажимать данные на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>.
| ![[Note]](/img/note.png) | Примечание | 
|---|
Требуется:
только одна нить допускается для ввода данных в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);
потребляет один элемент через функтор
выскакивает один элемент из очереди и применяет функтор на этом объекте
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасный и неблокирующий нить, если функтор безвредный и неблокирующий | 
| Возврат: | верно, если один элемент был потреблен | 
template<typenameFunctor>boolconsume_one(Functorconst&f);
потребляет один элемент через функтор
выскакивает один элемент из очереди и применяет функтор на этом объекте
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
Возвращается:
истинно, если один элемент был потреблен
template<typenameFunctor>size_typeconsume_all(Functor&f);>
потребляет все элементы через функтор
последовательно выводит все элементы из очереди и применяет функтор на каждом объекте
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасная и неблокирующая нить, если функтор безвредный и неблокирующий | 
| Возврат: | количество элементов, которые потребляются | 
template<typenameFunctor>size_typeconsume_all(Functorconst&f);
поглощает все элементы с помощью функтора
последовательно выводит все элементы из очереди и применяет функтор на каждом объекте
| ![[Note]](/img/note.png) | Примечание | 
|---|
| Возврат: | количество потребляемых элементов | 
size_typeread_available()const;>
получить число элементов, доступных для чтения
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасный и не требующий ожидания поток следует вызывать только из потребительской нити | 
| Возврат: | количество доступных элементов, которые могут быть выведены изspsc_queue | 
size_typewrite_available()const;>
получить пространство записи для записи элементов
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасный и не требующий ожидания поток должен быть вызван только из резьбы производителя | 
| Возвращает: | число элементов, которые могут быть перемещены вspsc_queue | 
constT&front()const;
получить ссылку на элемент в передней части очереди
Наличие переднего элемента можно проверить с помощью read_available().
| ![[Note]](/img/note.png) | Примечание | 
|---|
| Требуется: | только поглощающая нить позволяет проверить передний элемент read_available() >0. Если рингтон пуст, это неопределенное поведение, чтобы вызвать этот метод. | 
| Возврат: | ссылка на первый элемент в очереди | 
T&front();
получить ссылку на элемент в передней части очереди
Доступность фронтального элемента можно проверить с помощью read_available().
| ![[Note]](/img/note.png) | Примечание | ||
|---|---|---|---|
| Требуется: | только поглощающая нить позволяет проверить передний элемент read_available() >0. Если рингбуфер пуст, это неопределенное поведение, чтобы вызвать этот метод. | 
| Возврат: | ссылка на первый элемент в очереди | 
voidreset(void);>
перезагрузка
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Не безвредный | 
Статья Class template spsc_queue раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
| реклама |