📄 threadpool.h.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 + -