⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threadpool.h

📁 linux下的线程池,其中使用了条件变量,互斥锁等保持线程同步的变量!
💻 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 + -