C++11 线程安全的BlockingQueue实现
来源:互联网 发布:淘宝联盟代购推广 编辑:程序博客网 时间:2024/06/03 21:05
参考了muduo的BlockingQueue的实现,用C++11改写:
#ifndef _BLOCKINGQUEUE_H_#define _BLOCKINGQUEUE_H_#include <mutex>#include <condition_variable>#include <deque>#include <assert.h>template <typename T>class BlockingQueue {public: using MutexLockGuard = std::lock_guard<std::mutex>; BlockingQueue() : _mutex(), _notEmpty(), _queue() { } BlockingQueue(const BlockingQueue &) = delete; BlockingQueue& operator=(const BlockingQueue &) = delete; void put(const T &x) { { MutexLockGuard lock(_mutex); _queue.push_back(x); } _notEmpty.notify_one(); } void put(T &&x) { { MutexLockGuard lock(_mutex); _queue.push_back(std::move(x)); } _notEmpty.notify_one(); } T take() { std::unique_lock<std::mutex> lock(_mutex); _notEmpty.wait(lock, [this]{ return !this->_queue.empty(); }); assert(!_queue.empty()); T front(std::move(_queue.front())); _queue.pop_front(); return front; } size_t size() const { MutexLockGuard lock(_mutex); return _queue.size(); }private: mutable std::mutex _mutex; std::condition_variable _notEmpty; std::deque<T> _queue;};#endif // _BLOCKINGQUEUE_H_
0 0
- C++11 线程安全的BlockingQueue实现
- 线程安全的BlockingQueue
- Muduo里的blockingQueue实现线程池伪码
- 线程BlockingQueue的使用
- BlockingQueue队列实现线程池
- ThreadPoolExecutor线程池解析与BlockingQueue的三种实现
- linux多线程编程(C):信号量实现的线程安全队列
- linux多线程编程(C):互斥量实现的线程安全队列
- c++11 线程安全的队列实现
- c++ 实现的BlockingQueue
- ConcurrentHashMap线程安全的实现
- Map的线程安全实现
- 线程安全的实现方法
- 线程--blockingqueue
- 线程----BlockingQueue
- 线程----BlockingQueue
- 线程--BlockingQueue
- 线程BlockingQueue
- 51Nod-中国剩余定理(加优化版)
- android assets与raw资源
- hadoop自带的 balancer解析
- 年终奖问题
- java collection问题
- C++11 线程安全的BlockingQueue实现
- ARM7 LPC2378 远程升级----HEX文件
- JAVA 判断输入日期是否合法,求某日期n天后的日期,两日期之间相距的天数
- iOS开发进阶 - 使用Carthage管理iOS第三方库
- 15.Permutations-全排列(中等题)
- MFC中定时器的使用方法
- windbg的条件断点怎么下
- java实现递归版二分查找算法
- Linux环境下安装Zookeeper