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

📄 threadpool.h.bak

📁 网络socket,IO,线程池
💻 BAK
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -