#ifndef _CTHREADMGR_H_ #define _CTHREADMGR_H_ #ifndef WINDOWS_LEAN_AND_MEAN #define WINDOWS_LEAN_AND_MEAN #endif #include #include #include #include "Lock.h" // forward decl class CThread; class CThreadMgr { public: enum { MAX_THREAD_NUM = 63 }; CThreadMgr(); virtual ~CThreadMgr(); bool RegisterAndRun(CThread* lpThread); // ½º·¹µå¸¦ µî·ÏÇÑ´Ù. ÃÖ´ë 63°³±îÁö µî·ÏÇÒ ¼ö ÀÖ´Ù. bool JoinThread(); // ¸ðµç ½º·¹µå¸¦ Á¾·á½ÃŲ´Ù. inline int GetNum() { return m_nThreadNum; } inline int GetMaxNum() { return MAX_THREAD_NUM; } CThread* GetThread(int iPos) { return m_lpThreads[iPos]; } // ¸Å´ÏÀú¿¡ µî·ÏÇÏÁö ¾Ê°í, ±×³É ½ÇÇà ½ÃŲ´Ù. static HANDLE Run(CThread* lpThread); static bool Stop(CThread* lpThread, unsigned long dwTimeout = INFINITE); private: typedef CCSLock ThreadLock; CThread* m_lpThreads[MAX_THREAD_NUM]; HANDLE m_hThreads[MAX_THREAD_NUM]; ThreadLock m_ThreadLock; unsigned int m_nThreadNum; unsigned int m_bJoinStarted; }; #endif