加入收藏 | 设为首页 | 会员中心 | 我要投稿 老爷爷站长网 (https://www.laoyeye.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux下的C/C++线程池封装

发布时间:2022-10-11 17:31:59 所属栏目:Linux 来源:转载
导读: #ifndef _THREAD_POLL_H_
#define _THREAD_POLL_H_
#include
#include
#include
#include "task.h"
#include "nthread.h"
using namespace std;
/*
* 构造函数有两个参数线程池linux,(最

#ifndef _THREAD_POLL_H_

#define _THREAD_POLL_H_

#include

#include

#include

#include "task.h"

#include "nthread.h"

using namespace std;

/*

* 构造函数有两个参数线程池linux,(最大线程,每次新创建的线程)

* 当任务容器里面的任务是 可用的两倍就新增 $(每次新创建的线程) 的数量

*/

class ThreadPoll

{

private:

int ThreadNum; //当前线程数量

int MaxThread; //最大线程数量

int CreateThread; //每次创建的大小

int ActiveThread; //当前活跃的线程数量

pthread_mutex_t mutex;

pthread_mutex_t mutexActive;

pthread_cond_t cond;

vector TaskList; //任务向量列表

pthread_t * phtread_id; //线程id

vector NThreadList; //NThread 对象向量列表

bool isRun; //是否运行的标志位

private:

static void * threadFunc(void * p); //线程函数

public:

enum ThreadCtrl{ADD,DEL}; //添加或者减少计数

ThreadPoll(int maxThread,int createThread = 4); //构造函数 maxThread为最大的线程createThread为每次最多创建的线程

~ThreadPoll(); //析构

void AddTask(Task * Addtask); //添加任务到任务向量列表

void Destroy(); //结束所有线程,正在运行的等待运行

void ChangeActiveThread(ThreadCtrl ctrl); //改变当前占用进程的累计计数

int GetSleepThreadNum(); //获得可用的进程数量

};

#endif //_THREAD_POLL_H_

(编辑:老爷爷站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!