|  | 
|      | 
|  | 
| Class template queueBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
  
   | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ![[Warning]](/img/warning.png) | Предупреждение | 
|---|---|
| Проверяется только в том случае, если головка и хвостовые узлы очереди и свободный список могут быть изменены без блокировки. На большинстве платформ вся реализация без блокировки, если это правда. Используя атомы в стиле c++0x, невозможно обеспечить полностью точную реализацию, потому что нужно будет протестировать каждый внутренний узел, что невозможно, если из операционной системы будут выделены дополнительные узлы. | 
| Возвращается: | верно, если реализация не заблокирована. | 
voidreserve(size_typen);
Выделить n узлов для свободного списка
| Примечание | |||
|---|---|---|---|
| безвредный поток, может блокировать, если блоки распределителя памяти | |||
| только действительный, если нет емкости | 
voidreserve_unsafe(size_typen);>
Выделить n узлов для свободного списка
| ![[Note]](/img/note.png) | Примечание | не является нить-безопасным, может блокировать, если блоки распределителя памяти | 
|---|
| Требует: | действителен только в том случае, если нет емкости | 
boolempty(void)const;
Проверьте, пуста ли очередь
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Результат является точным, только если ни одна другая нить не изменяет очередь. Поэтому редко целесообразно использовать это значение в программной логике. | 
| Возвращает: | истинно, если очередь пуста, ложно иначе | 
boolpush(Tconst&t);
Притягивает объект t к очереди.
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасный. Если внутренний пул памяти исчерпан и пул памяти не фиксированного размера, из ОС будет выделен новый узел. Это может быть несвободно. | 
| Постусловия: | объект будет отодвинут в очередь, если можно выделить внутренний узел | 
| Возврат: | верно, если операция толчка успешна. | 
boolbounded_push(Tconst&t);
Притягивает объект t к очереди.
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасная и неблокирующая нить. Если внутренний пул памяти исчерпан, операция выйдет из строя | 
| . Постусловия: | объект будет отодвинут в очередь, если можно выделить внутренний узел | 
| Возврат: | верно, если операция толчка будет успешной. | 
| Бросает: | , если распределитель памяти бросает | 
template<boolBounded>booldo_push(Tconst&t);>
queue public member functionsboolunsynchronized_push(Tconst&t);
Подталкивает объект t к очереди.
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Небезопасно. Если внутренний пул памяти исчерпан и пул памяти не фиксированного размера, из ОС будет выделен новый узел. Это может быть несвободно. | 
| Постусловия: | объект будет отодвинут в очередь, если можно выделить внутренний узел | 
| Возврат: | верно, если операция толчка успешна. | 
| Бросает: | , если распределитель памяти бросает | 
boolpop(T&ret);
Поп-объект из очереди.
boolunsynchronized_pop(T&ret);>
Поп-объект из очереди.
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Не безвредный, но неблокирующий | 
| Постусловия: | в случае успешной работы с поп-ап, объект будет скопирован в ret. | 
| Возвращается: | верно, если операция поп-музыки успешна, ложно, если очередь пуста. | 
template<typenameU>boolunsynchronized_pop(U&ret);
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Не безвредный, но неблокирующий | 
| Требуется: | Тип U должен быть конструируемым по T и копируемым, или T должен быть конвертируемым в U | 
| Пост-условия: | в случае успешной работы с поп-образованием объект будет скопирован в рет. | 
| Возвращается: | верно, если операция поп-музыки успешна, ложно, если очередь пуста. | 
template<typenameFunctor>boolconsume_one(Functor&f);
потребляет один элемент через функтор
выскакивает один элемент из очереди и применяет функтор на этом объекте
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасная и неблокирующая нить, если функтор безвредный и неблокирующий | 
| Возврат: | верно, если один элемент был потреблен | 
template<typenameFunctor>boolconsume_one(Functorconst&f);
потребляет один элемент через функтор
выскакивает один элемент из очереди и применяет функтор на этом объекте
| ![[Note]](/img/note.png) | Примечание | ||
|---|---|---|---|
| Безопасный для ниток и неблокирующий, если функтор безвредный и неблокирующий | |||
template<typenameFunctor>size_tconsume_all(Functor&f);>
потребляет все элементы с помощью функтора
последовательно выводит все элементы из очереди и применяет функтор на каждом объекте
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасный и неблокирующий нить, если функтор безвредный и неблокирующий | 
| количество потребляемых элементов | 
template<typenameFunctor>size_tconsume_all(Functorconst&f);>
потребляет все элементы через функтор
последовательно выводит все элементы из очереди и применяет функтор на каждом объекте
| ![[Note]](/img/note.png) | Примечание | 
|---|---|
| Безопасный и неблокирующий поток, если функтор безвредный и неблокирующий | 
| Возврат: | количество потребляемых элементов | 
Статья Class template queue раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
| реклама |