任务队列主要满足以下需求:
可定制:可个性化任务队列的名称,最大任务数和任务处理函数
多个任务队列并存,通过任务队列名称唯一标记。类似rabbitMQ
每个任务支持二进制安全,可存储各种结构的信息(二进制结构体&字符串….)
支持多线程操作,支持多线程同步
支持单例模式
talk is cheap, show me the code !!!
taskQueue.h
#ifndef __TASK_QUEUE_H
#define __TASK_QUEUE_H
#include <iostream>
#include <string>
#include <queue>
#include <map>
#include <pthread.h>
#define MAX_TASK_LEN 1024
using namespace std ;
class Task
{
public :
char taskContent[MAX_TASK_LEN];
unsigned int taskContentLen;
Task(){
memset (taskContent,0 ,sizeof (taskContent));
taskContentLen= 0 ;
}
bool doWith(){
cout <<"CLASS Task: " << taskContent<< endl;
};
};
struct taskInfo
{
queue <Task *> *tasks;
pthread_mutex_t lock;
pthread_cond_t cond;
unsigned int taskNum;
unsigned int maxTaskNum;
taskInfo(unsigned int maxTaskNums):maxTaskNum(maxTaskNums){
taskNum= 0 ;
pthread_mutex_init(&lock, NULL);
}
};
c