#ifndef _LOCKINGQUEUE_H_ #define _LOCKINGQUEUE_H_ #include "Thread.h" #include // i should make one of those single reader/ single writer queues template class LockingQueue { public: size_t Size() { m_crit.Enter(); const size_t s = m_queue.size(); m_crit.Leave(); return s; } void Push(const T& t) { m_crit.Enter(); m_queue.push(t); m_crit.Leave(); } bool Pop(T& t) { m_crit.Enter(); if (m_queue.size()) { t = m_queue.front(); m_queue.pop(); m_crit.Leave(); return true; } m_crit.Leave(); return false; } private: std::queue m_queue; Common::CriticalSection m_crit; }; #endif