diff options
Diffstat (limited to 'orkaudio/ThreadSafeQueue.h')
-rw-r--r-- | orkaudio/ThreadSafeQueue.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/orkaudio/ThreadSafeQueue.h b/orkaudio/ThreadSafeQueue.h index 4fcc330..e050c85 100644 --- a/orkaudio/ThreadSafeQueue.h +++ b/orkaudio/ThreadSafeQueue.h @@ -61,13 +61,17 @@ template <class T> bool ThreadSafeQueue<T>::push(T &element) /** Pop and element from the queue, or blocks until one available */ template <class T> T ThreadSafeQueue<T>::pop() { - m_semaphore.acquire(); - + ACE_Time_Value timeout(time(NULL)+2); + m_semaphore.acquire(&timeout); MutexSentinel mutexSentinel(m_mutex); - T element = m_queue.front(); - m_queue.pop(); + T element; + if(m_queue.size() > 0) + { + element = m_queue.front(); + m_queue.pop(); + } return element; } |