threadpool.h.bak

来自「网络socket,IO,线程池」· BAK 代码 · 共 84 行

BAK
84
字号
#ifndef _M_THREAD_POOL_2004_7_28_ZHY_H
#define _M_THREAD_POOL_2004_7_28_ZHY_H

#include "../Thread/Thread.h"

#define THREADPOOL_LOW_SIZE 	10
#define THREADPOOL_MAX 		50

class ProcessThread;

template <typename T>
class CThreadPool:public Thread,private NoAssign
{
public:
	////////////////////////////////////////////////////////////////////////////
	// Constructors / Destructor                                              //
	////////////////////////////////////////////////////////////////////////////
	
	// Construct
	CThreadPool(TaskPool<T>* pTaskint nLow = THREADPOOL_LOW_SIZE,int nMaxCount = THREADPOOL_MAX);	
		
	// Destrutor
	~CThreadPool();
	
	virtual void RunInfo(int nIndex)
	{
	}
	
	////////////////////////////////////////////////////////////////////////////
	// Exit Operations							  //
	////////////////////////////////////////////////////////////////////////////
	int   		 StopEx();	
	bool		 ExitAllThread();	
	virtual void 	 ExitThread(int nIndex);
	
protected:
	int	 	 Run(void);
	inline int	 SocketPoolSize()
	{
		return g_socketPool.GetTaskSize();
	}

	////////////////////////////////////////////////////////////////////////////
	// Inner Operations														  //
	////////////////////////////////////////////////////////////////////////////
	int  		AllocThreadID();
	friend class 	ProcessThread;

private:
	int					m_nLow;    
	int					m_nMaxSize;
	// count of the child thread and his thread-safe lock
	int					m_nProcessingCount;
	MCriticalSection			m_CriProCount; 
	map<int,ProcessThread*>			m_allThread;
	MCriticalSection			m_CrivectorThreadID; 
	vector<int>				m_vThreadID;
	CEvent					m_EvProCount;
	IndexAlloctor				m_indexAlloc;
	bool					m_childCanExit;
	TaskPool<T> *				m_pTaskPool;
};
	
	
class ProcessThread:public Thread
{
public:
	ProcessThread(CThreadPool* pMangerPool,int nIndex);
	~ProcessThread();
	
	void	Exit();
		
	protected:
	int				Run(void);
		
	CThreadPool*			m_pManagerPool;
	bool				m_bWantExit;
	int				m_nIndex;
	MUDPSocket*			m_pSocket;
};
			
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?