Files
mbft-cpp/core/inc/ThreadSafeQueue.h
T

47 lines
581 B
C++
Raw Normal View History

2026-07-15 12:02:30 +03:00
#include <mutex>
#include <condition_variable>
#include <queue>
namespace MBFT
{
template<typename T>
class ThreadSafeQueue
{
private:
std::queue<T> queue;
std::mutex m;
std::condition_variable cv;
public:
void push(T item);
T pop(void);
};
}
template<typename T>
void MBFT::ThreadSafeQueue<T>::push(T item)
{
{
std::lock_guard l(m);
queue.push(item);
}
cv.notify_one();
}
template<typename T>
T MBFT::ThreadSafeQueue<T>::pop(void)
{
std::unique_lock l(m);
while (!queue.size())
{
cv.wait(l);
}
T v = queue.front();
queue.pop();
return v;
}