threadpool.h
来自「linux下的线程池,其中使用了条件变量,互斥锁等保持线程同步的变量!」· C头文件 代码 · 共 86 行
H
86 行
#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 + =
减小字号Ctrl + -
显示快捷键?