📄 arwinthreadpool_t.h
字号:
//---------------------------------------------------------------------------
#ifndef ArWinThreadPool_TH
#define ArWinThreadPool_TH
#include <windows.h>
#include "ArThreadPool_T.h"
#define MAXTIME 20 * 1000
#define MAX_USED_NUM_TIME 8
#define MAX_NORMAL_NUM 8
//---------------------------------------------------------------------------
class ArWinThread_T;
struct ArThreadNode_T
{
ArWinThread_T* pThread;
ArThreadNode_T* pPrior;
ArThreadNode_T* pNext;
};
//---------------------------------------------------------------------------
class ArWinThreadPool_T:public ArThreadPool_T
{
public:
bool __stdcall Initial(int iSize, int iStep);//初始线程池规模
void __stdcall Destory(void); //销毁
ArThread_T* __stdcall GetThread(int iGrade = 0, bool bCyc = false); //得到线程
bool __stdcall Free(ArThread_T* pThread); //回收线程
bool __stdcall GetInfo(ArThreadPoolInfo_T &info); //得到线程池信息
bool __stdcall TerminateAll(void); //强制结束所有
bool __stdcall GetVersion(char* strVersion);
ArWinThread_T* Allocate(int iGrade);
bool Free(ArWinThread_T* pThread);
ArWinThreadPool_T(int iInitialNum = 10, int iStep = 5);
~ArWinThreadPool_T();
void CheckBlockThread(void);
void CheckUsedNum(void);
void CheckThreadPool(void);
private:
ArThreadNode_T* m_pNoUseFirst;
ArThreadNode_T* m_pNoUseLast;
ArThreadNode_T* m_pUsedFirst;
ArThreadNode_T* m_pUsedLast;
//CRITICAL_SECTION m_csAllocate;
//CRITICAL_SECTION m_csFree;
HANDLE m_hWatchEvent;
HANDLE m_hHeap;
int m_iPoolNoUse;
int m_iInitialNum;
int m_iStep;
int m_iPoolUsed;
int m_iCycleThread;
int m_iAdjustAdd;
int m_iAdjustSub;
int m_iPoolLastUsed;
int m_iUsedNumLastTime;
unsigned long m_ulCheckThread;
ArThreadNode_T* FindeNode(ArWinThread_T* pThread);
void ExpandList(void);
bool Free(ArThreadNode_T* pNode);
void Substract(void);
static unsigned int __stdcall ThreadCheck(void* pPara);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -