From 070e90f5387a57c8898ddcdaed8b0cb219a4b6aa Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Wed, 15 Jul 2026 12:02:30 +0300 Subject: [PATCH] Add ThreadSafeQueue --- core/inc/ThreadSafeQueue.h | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 core/inc/ThreadSafeQueue.h diff --git a/core/inc/ThreadSafeQueue.h b/core/inc/ThreadSafeQueue.h new file mode 100644 index 0000000..50b3d61 --- /dev/null +++ b/core/inc/ThreadSafeQueue.h @@ -0,0 +1,46 @@ +#include +#include +#include + +namespace MBFT +{ + template + class ThreadSafeQueue + { + private: + std::queue queue; + + std::mutex m; + std::condition_variable cv; + public: + void push(T item); + T pop(void); + }; +} + +template +void MBFT::ThreadSafeQueue::push(T item) +{ + { + std::lock_guard l(m); + queue.push(item); + } + + cv.notify_one(); +} + +template +T MBFT::ThreadSafeQueue::pop(void) +{ + std::unique_lock l(m); + + while (!queue.size()) + { + cv.wait(l); + } + + T v = queue.front(); + queue.pop(); + + return v; +}