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 + -
显示快捷键?