0001: #ifndef __CTHREAD_H_
0002: #define __CTHREAD_H_
0003:
0004: #include "..\..\stdafx.h"
0005:
0006: namespace MySystem{
0007:
0008:
0009:
0010:
0011:
0012: typedef enum
0013: {
0014: THREAD_DEAD=0,
0015: THREAD_WAIT,
0016: THREAD_RUN,
0017: }THREAD_STATE;
0018:
0019:
0020:
0021:
0022: class CThreadData
0023: {
0024: private:
0025: void *m_pData;
0026: THREAD_STATE m_iState;
0027: public:
0028: CThreadData() : m_iState(THREAD_DEAD), m_pData(NULL){}
0029:
0030: THREAD_STATE GetState() const {return m_iState;}
0031: void SetState( THREAD_STATE s ) {m_iState = s;}
0032: void Finish() {SetState(THREAD_DEAD);}
0033:
0034: void *GetData() const {return m_pData;}
0035: void SetData( void *p ) {m_pData = p;}
0036: };
0037:
0038:
0039:
0040:
0041: class CThreadMgr
0042: {
0043: private:
0044: enum
0045: {
0046: THREAD_MAX = 2,
0047: THREAD_WORK_MAX = 16,
0048: };
0049:
0050: HANDLE *m_hThread;
0051: CThreadData *m_pThread;
0052: bool m_bThreadEnable;
0053: int m_ThreadMax;
0054: int m_WorkMax;
0055:
0056: public:
0057: CThreadMgr( unsigned ( __stdcall *func )( void * )
0058: , int thread_max
0059: , int work_max );
0060: ~CThreadMgr();
0061:
0062:
0063: int Req( void *pData );
0064: int GetLeftWork();
0065:
0066:
0067: CThreadData *GetWork();
0068: bool IsEnable() const {return m_bThreadEnable;}
0069: };
0070: }
0071:
0072: #endif
0073:
0074: