并发编程中,数据产生和数据处理在不同的线程,这些线程传递数据常用的就是生产者消费者模式
以下是模仿Java的BlockingQueue实现的生产者消费者模式:
#pragma once
#include <queue>
#include <mutex>
#include <condition_variable>
enum PopResult{ POP_OK, POP_STOP, POP_UNEXPECTED };
template<class T>
class BlockingQueue : public std::queue<T>
{
public:
std::mutex m_lock;
std::condition