#pragma once
#include <map>
#include <queue>
#include <vector>
#include <iostream>
#include <unistd.h>
#include "CPthread.h"
#define THREAD_NUM 4 //初始化线程数
#define MAX_THREADNUM 32754 //最多可以开的线程数(亲测)
using namespace std;
typedef void(*Task)(void);
class CThraedPool
{
public:
CThraedPool(size_t tasksSize, size_t threadsSize);
void start(); //线程池启动
void stop(); //线程池停止
void addTask(Task task); //添加任务
int getTaskCount(); //获取线程池任务数量
~CThraedPool();
public:
static void pthreadfun(int no); //捕获ctrl+c信号
static void threadRoutine(void* arg);
Task take(); //领取任务
private:
queue<Task> m_tasksqueue; //任务队列
vector<CThread*> m_threads; //当前线程向量表
map<pthread_t, Task> m_workqueue; //工作队列
private:
pthread_mutex_t m_mutex; //互斥锁
pthread_cond_t m_cond; //条件变量
private:
bool m_isQuit; //线程池退出
int m_threadsMax; //最大线程数
int m_threadsSize; //线程数
int m_waitCount; //空闲线程数
int m_tasksSize; //任务数
};
1619

被折叠的 条评论
为什么被折叠?



