📄 threadpool.h
字号:
#ifndef _THREADPOOL_H_INCLUDE_
#define _THREADPOOL_H_INCLUDE_
#include <stdio.h>
#include <queue>
using namespace std;
class Mutex;
class Condition;
typedef enum
{
POOL_INVALID,
POOL_VALID,
POOL_EXIT,
} pool_state_t;
class ThreadJob
{
public:
virtual void DoJob(void *pPara) = 0;
};
typedef void (*JOB)(void *);
struct CallProcPara
{
ThreadJob* _pObj;
void *_pPara;
CallProcPara(ThreadJob* p, void *pPara) : _pObj(p), _pPara(pPara) { };
};
struct JobItem
{
JOB _job;
void *_pPara;
JobItem(JOB job = NULL, void *pPara = NULL) : _job(job), _pPara(pPara) { };
};
typedef std::queue<JobItem *> JobQueue;
class ThreadPool
{
public:
ThreadPool();
virtual ~ThreadPool();
protected:
static void CallProc(void *pPara);
static void* Worker(void* pPara);
public:
bool Init(int iNum = 3,int idle_timeout = 5);
bool Destroy();
bool Dispatch(JOB job,void* pParam);
bool Dispatch(ThreadJob* pJob,void* pParam);
public:
int& getMax() ;
int& getAlive() ;
int& getIdle() ;
int& getIdletimeout() ;
JobQueue& getJobQueue() ;
pool_state_t& getState() ;
Mutex* getPoolMutex() ;
Condition* getCond() ;
private:
Mutex* pPoolMutex_;
Mutex* pCondMutex_;
Condition* pCond_;
pool_state_t state_;
int max_;
int alive_;
int idle_;
int idle_timeout_;
JobQueue JobQueue_;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -