diff --git a/emper/UnboundedBlockingMpscQueue.hpp b/emper/UnboundedBlockingMpscQueue.hpp index 5b2c8534b212fe41b53f4726405503a3a8f2a2b1..81c8a2ff4bcdf68462f2205ab8a8c5fe1f1d0d75 100644 --- a/emper/UnboundedBlockingMpscQueue.hpp +++ b/emper/UnboundedBlockingMpscQueue.hpp @@ -33,13 +33,14 @@ class UnboundedBlockingMpscQueue : public Blockable<LogSubsystem::U_B_MPSC_Q> { // Therefore if we tryToGet a new 't' while 't' is available the current 't' // would be overridden and dropped. assert(!tPopped); + std::lock_guard<std::mutex> lock(queueMutex); - if (!mpscQueue.empty()) { - t = mpscQueue.front(); - mpscQueue.pop(); - tPopped = true; - postRetrieve(); - } + if (mpscQueue.empty()) return; + + t = mpscQueue.front(); + mpscQueue.pop(); + tPopped = true; + postRetrieve(); } public: