(1)消息队列的实现
#ifndef NET_FRAME_CONCURRENT_QUEUE_H
#define NET_FRAME_CONCURRENT_QUEUE_H
#include <queue>
#include <mutex>
#include <condition_variable>
template<class Type>
/*消息队列实现*/
class ConcurrentQueue {
ConcurrentQueue& operator=(const ConcurrentQueue&) = delete;
ConcurrentQueue(const ConcurrentQueue& other) = delete;
public:
ConcurrentQueue() : _queue(), _mutex(), _condition() { }
virtual ~ConcurrentQueue() { }
void Push(Type record) {
std::lock_guard <std::mutex> lock(_mutex);
_queue.push(record);
_condition.notify_one();
}
bool Pop(Type& record, bool isBlocked = true) {
if (isBlocked) {
std::unique_lock <std::mutex> lock(_mutex);
while (_queue.empty()) {
_condition