/*
* 请保存为 task_queue.h文件
* 任务队列用来管理一系列的任务,多个工作线程阻塞在队列的条件变量上,当有任务
* 加入时,则唤醒工作线程,工作完毕后继续阻塞
*/
#ifndef TASK_QUEUE_H_
#define TASK_QUEUE_H_
#include <queue>
#include <boost/thread.hpp>
#include <boost/noncopyable.hpp>
#include <boost/function.hpp>
//定义任务队列
template<class Task>
class TaskQueue:boost::noncopyable {
public:
void PushTask(const Task & task_func) {
boost::unique_lock<boost::mutex> lock(task_mutex_);
task_queue_.push(task_func);
cond_.notify_one();
}
Task GetTask() {
boost::unique_lock<boost::mutex> lock(task_mutex_);