diff options
Diffstat (limited to 'zencore')
| -rw-r--r-- | zencore/include/zencore/blockingqueue.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/zencore/include/zencore/blockingqueue.h b/zencore/include/zencore/blockingqueue.h index f92df5a54..a80cd52f4 100644 --- a/zencore/include/zencore/blockingqueue.h +++ b/zencore/include/zencore/blockingqueue.h @@ -50,6 +50,26 @@ public: return false; } + bool TryDequeue(T& Item) + { + if (m_CompleteAdding.load()) + { + return false; + } + + std::unique_lock Lock(m_Lock); + if (!m_Queue.empty()) + { + Item = std::move(m_Queue.front()); + m_Queue.pop_front(); + m_Size--; + + return true; + } + + return false; + } + void CompleteAdding() { if (!m_CompleteAdding.load()) |