#include "types.h"
-// blocks enq() and deq() when queue is FULL or EMPTY
template<class T>
class fifo {
public:
return true;
}
- void deq(T * e) {
+ T deq() {
lock ml(m_);
while(q_.empty())
non_empty_c_.wait(ml);
- *e = q_.front();
+ T t = q_.front();
q_.pop_front();
if (max_ && q_.size() < max_)
has_space_c_.notify_one();
- }
-
- bool size() {
- lock ml(m_);
- return q_.size();
+ return t;
}
private: