4 #ifndef FIRE_THREADING_SYNCQUEUE_HPP_INCLUDED
5 #define FIRE_THREADING_SYNCQUEUE_HPP_INCLUDED
7 #include <boost/thread/mutex.hpp>
8 #include <boost/thread/condition_variable.hpp>
13 #include "fire/gear/threading/types.hpp"
47 while (_isFullNoWait()) {
54 _items.push_front(item);
56 _notEmpty.notify_all();
67 while (_isEmptyNoWait()) {
74 T item = _items.back();
77 _notFull.notify_all();
106 return _isEmptyNoWait();
115 return _isFullNoWait();
119 bool _isEmptyNoWait() {
120 return _items.size() == 0;
123 bool _isFullNoWait() {
127 return _items.size() >= _max;
131 std::list< T > _items;
134 mutable boost::mutex _mtx;
135 mutable boost::condition_variable _notFull;
136 mutable boost::condition_variable _notEmpty;
Coda sincronizzata templetizzata.
Definition: SyncQueue.hpp:24
void push(const T &item)
Aggiunge un elemento in coda.
Definition: SyncQueue.hpp:43
T pop()
Restituisce il primo elemento della coda con strategia FIFO. Se la coda risultasse vuota il thread ch...
Definition: SyncQueue.hpp:63
bool isEmpty()
Verifica se la coda risulta vuota.
Definition: SyncQueue.hpp:104
SyncQueue()
Costruttore della coda con capacità infinita.
Definition: SyncQueue.hpp:29
SyncQueue(int const &max)
Costruttore della coda con capacità limitata.
Definition: SyncQueue.hpp:36
size_t getMax() const
ritorna il numero massimo degli elementi memorizzabili.
Definition: SyncQueue.hpp:95
size_t size() const
ritorna il numero degli elementi attualmente in coda
Definition: SyncQueue.hpp:86
bool _isFull()
Verifica se la coda risulta completamente riempita sulla base del valore della proprietà max...
Definition: SyncQueue.hpp:113