c++ 多线程阻塞队列的简单实现
来源:互联网 发布:环信 java 服务端 编辑:程序博客网 时间:2024/05/19 02:30
经常用到,经常重复写,先留一份,日后备用,不想用别人实现的,第三方的针对性都不强,加上了一堆用不到的东西。好了 上代码
/* * Queue.h * * Created on: 2013-4-9 * Author: sunshaolei */#ifndef MYQUEUE_H_#define MYQUEUE_H_#include <deque>#include <sys/types.h>#include <stdio.h>#include <unistd.h>#include <pthread.h>#include <stdio.h>using namespace std;template<class DataType>class MyQueue {public:MyQueue(int count):_nready(0) {this->count = count;pthread_mutex_init(&_not_full_mutex, NULL);pthread_mutex_init(&_not_empty_mutex, NULL);pthread_cond_init(&_not_full_cond, NULL);pthread_cond_init(&_not_empty_cond, NULL);}int push(DataType &d) {pthread_mutex_lock(&_not_full_mutex);while (_nready >= count)pthread_cond_wait(&_not_full_cond, &_not_full_mutex);_queue.push_back(d);_nready++;pthread_cond_signal(&_not_empty_cond);pthread_mutex_unlock(&_not_full_mutex);return 0;}int pop(DataType &d) {pthread_mutex_lock(&_not_empty_mutex);while (_nready <= 0)pthread_cond_wait(&_not_empty_cond, &_not_empty_mutex);d = _queue.front();_queue.pop_front();_nready--;pthread_cond_signal(&_not_full_cond);pthread_mutex_unlock(&_not_empty_mutex);return 0;}private:int _nready;int count;pthread_mutex_t _not_full_mutex;pthread_mutex_t _not_empty_mutex;pthread_cond_t _not_full_cond;pthread_cond_t _not_empty_cond;deque<DataType> _queue;};#endif /* QUEUE_H_ */
- c++ 多线程阻塞队列的简单实现
- 一个简单的阻塞队列实现
- Java:实现简单的阻塞队列
- 使用数组简单实现的阻塞队列
- java多线程之阻塞队列BlockingQueue的简单应用
- Java通过DelayQueue的实现多线程任务的阻塞队列
- 基于C++11的阻塞队列简单实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- c++ 阻塞队列的实现
- Java阻塞队列的实现
- java 环形阻塞队列简单实现
- Java多线程之可阻塞的队列
- Java的多线程之阻塞队列
- java多线程-阻塞队列
- 安卓手机如何实现邮件的实时推送服务
- Maven学习(七)- 构建Spring项目
- 第七周任务一
- eclipse 连接sql server 2008【转】
- C++函数指针、函数指针数组
- c++ 多线程阻塞队列的简单实现
- Boost下载安装编译配置使用指南(含Windows和Linux)
- 保留几位有效数字 多种方法实现及注意事项
- 前辈的问
- 数据库中列变成行
- mysql数据库排名
- java4android视频教程学习笔记(第1-17集)
- GDI+ 没有GDI中坐标映射的概念
- JS