diff options
Diffstat (limited to 'zencore/include')
| -rw-r--r-- | zencore/include/zencore/blockingqueue.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/zencore/include/zencore/blockingqueue.h b/zencore/include/zencore/blockingqueue.h index f92df5a54..4e2687003 100644 --- a/zencore/include/zencore/blockingqueue.h +++ b/zencore/include/zencore/blockingqueue.h @@ -36,18 +36,20 @@ public: } std::unique_lock Lock(m_Lock); - m_NewItemSignal.wait(Lock, [this]() { return !m_Queue.empty() || m_CompleteAdding.load(); }); - - if (!m_Queue.empty()) + if (m_Queue.empty()) { - Item = std::move(m_Queue.front()); - m_Queue.pop_front(); - m_Size--; - - return true; + m_NewItemSignal.wait(Lock, [this]() { return !m_Queue.empty() || m_CompleteAdding.load(); }); + } + if (m_Queue.empty()) + { + return false; } - return false; + Item = std::move(m_Queue.front()); + m_Queue.pop_front(); + m_Size--; + + return true; } void CompleteAdding() |