linux 线程池类封装

linux下封装的线程池类 和 任务基类 

根据具体业务继承任务基类 

线程池内使用条件变量来调度任务

下载地址: http://download.csdn.net/detail/mtour/8021853

#ifndef THREADPOOL_H
#define THREADPOOL_H

#include <pthread.h>
#include <time.h>
#include <unistd.h>
#include <stdio.h>
#include <list>

using namespace std;

#define DEFAULT_THREAD_COUNT  5

class CThreadPool;

// base task
class CTask
{
public:
	CTask();
	virtual ~CTask();
	virtual int Do()=0;       // the subclass must refined this function
public:	
	time_t GetCreateTime(){return m_nCreateTime;};
protected:
	time_t  m_nCreateTime;	  // when create the task
	int     m_nDoFlag;
};

class CThreadItem
{
public:
	CThreadItem(int nID,CThreadPool* pThreadPool);
	~CThreadItem();
	void SetQuit(){m_nThreadFlag=0;};
protected:
	CThreadItem(){};
	void OnTreatTaskThread();
	static void *TreatTaskThread(void* pUser)  // 接收视频流线程
	{		
		CThreadItem* pThis = (CThreadItem*)pUser;
		if (pThis)
		{
			pThis->OnTreatTaskThread();
		}
		return 0;
	}
private:
	int        m_nID;
	pthread_t  m_hThreadHandle;	
	int        m_nThreadFlag;	
	CThreadPool* m_pThreadPool;
};

class CThreadPool
{
public:
    CThreadPool(int nThreadCount);
	~CThreadPool();
	int  Init();
	void Fini();
	void AddThread(int nCount);    
	void AddTask(CTask* pTask);
public:
	pthread_cond_t m_taskCond;
	pthread_mutex_t m_taskMutex;
public:
	list<CThreadItem*>  m_threadList;
	pthread_mutex_t  m_threadListMutex;
	list<CTask*>  m_taskList;
	pthread_mutex_t  m_taskListMutex;
	int   m_nThreadCount;
protected:
	CThreadPool(){};
};


#endif



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值