Linux下任务队列类

任务队列主要满足以下需求:

  • 可定制:可个性化任务队列的名称,最大任务数和任务处理函数
  • 多个任务队列并存,通过任务队列名称唯一标记。类似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>

//默认任务包大小为1k
#define MAX_TASK_LEN 1024

using namespace std;

class Task
{
public:
    //任务内容,通过taskContentLen判断长度,二进制安全 
    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;   //任务队列互斥锁,控制多线程时tasks中入队&出队的同步问题
    pthread_cond_t cond;    //任务队列条件变量,控制最大任务数
    unsigned int taskNum;   //任务队列中任务数
    unsigned int maxTaskNum;    //任务队列最大任务数
    taskInfo(unsigned int maxTaskNums):maxTaskNum(maxTaskNums){
        taskNum= 0;
        pthread_mutex_init(&lock, NULL);
    }
};

c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值