Make SGLockingQueue::pop usable.

Since there's no external lock, it was impossible to check the queue was non-empty before a pop, without a race condition. To avoid this, tolerate an empty queue and return a default constructed value.
This commit is contained in:
James Turner
2012-11-25 22:36:15 +00:00
parent 1a68d34663
commit 7d8d4a03fb

View File

@@ -127,8 +127,8 @@ public:
*/
virtual T pop() {
SGGuard<SGMutex> g(mutex);
//if (fifo.empty()) throw NoSuchElementException();
assert( ! this->fifo.empty() );
if (this->fifo.empty()) return T(); // assumes T is default constructable
// if (fifo.empty())
// {
// mutex.unlock();