#pragma once /************************************************************************************************** ÀÛ¼ºÀÏ: 2008-07-15 ÀÛ¼ºÀÚ: ¹®»óÇö (youngmoon@webzen.co.kr) ¼³¸í: IOCP ¸¦ ÀÌ¿ëÇÏ¿© ½º·¹µåPOOL À» Áö¿øÇÑ´Ù. **************************************************************************************************/ #define MAX_THREAD_COUNT 32 #define IOCPTHREAD_CLOSE -1 #include #include #include #include "WorkerThread.h" class CWorkerThreadPool { public: CWorkerThreadPool(); ~CWorkerThreadPool(); // ½º·¹µå Ç®À» »ý¼ºÇÑ´Ù. bool CreateThreadPool(DWORD dwThreadCnt); // ½º·¹µå Ç®À» Á¾·áÇÑ´Ù. void DestoryThreadPool(); // ÀÛ¾÷À» Ãß°¡ÇÑ´Ù. BOOL AddJob(CWorkerThread* pWorker); // ½º·¹µåÀ» »ý¼ºÇÑ´Ù. void AddJobThread(CWorkerThread* pWorker); // ¸ðµç ÀÛ¾÷ ½º·¹µå¸¦ Á¤Áö ½ÃŲ´Ù. void AllStopJobThread(); // µî·ÏµÈ ¸ðµç ½º·¹µå¸¦ È£ÃâÇÑ´Ù. void OnTimr(HANDLE hRequest, DWORD dwRequest); private: // IOCP ¸ÞÀÎ ÇÚµé HANDLE m_hIOCP; // ½º·¹µå ÇÁ·Î½ÃÁ®ÀÇ ÇÚµé HANDLE m_hThread[MAX_THREAD_COUNT]; // ½º·¹µå ¼ö DWORD m_dwThreadCount; // ÀÛ¾÷ POOL ½º·¹µå ÇÁ·Î½ÃÁ® static UINT __stdcall WorkThreadProc( LPVOID parameter ); // ¼¼¼Ç POOL ½º·¹µå ÇÁ·Î½ÃÁ® static UINT __stdcall SessionThreadProc( LPVOID parameter ); //ÀÛ¾÷½º·¹µå ÄÁÅ×ÀÌ³Ê std::vector m_vecThread; typedef std::vector::iterator WorkerIter; };