#pragma once //#include //#include #include //#include #include "./Uitl/CriticalSection.h" /************************************************************************************************** ÀÛ¼ºÀÏ: 2009-03-12 ÀÛ¼ºÀÚ: ¹®»óÇö (youngmoon@webzen.co.kr) ¼³¸í: Àâ Å¥¸¦ °ü¸®Çϴ Ŭ·¡½º (¹ë·ù ŸÀÔ) **************************************************************************************************/ template class CQueue { public: CQueue(void) : m_bAlive(false) {}; virtual ~CQueue(void) {}; protected: std::list<_TQUVALUE> m_Que; //Á¤·®Â÷°¨, Á¤¾× ±â°£ ¸¸·á, ¶óÀ̺ê üũ¸¦ °ü¸®ÇÑ´Ù. WZPUBLIC::CriticalSection m_cs; //m_JobQue ÀÇ µ¿±âÈ­ °´Ã¼ public: //ÀÛ¾÷À» Å¥¿¡ ³Ö´Â´Ù. void push(_TQUVALUE& job) { autolock(m_cs); m_Que.push_back(job); }; //ÀÛ¾÷À» Å¥¿¡¼­ ²¨³»¿Â´Ù. bool pop(_TQUVALUE& job) { autolock(m_cs); if(!m_Que.empty()) { job = m_Que.front(); m_Que.pop_front(); return true; } return false; }; //Å¥¸¦ ºñ¿î´Ù. void clear() { autolock(m_cs); m_Que.clear(); }; private: bool m_bAlive; // Å¥¸¦ »ç¿ëÇØµµ µÇ´ÂÁö ¿©ºÎ¸¦ °¡Áø´Ù. public: bool GetQueueAlive() {return m_bAlive;}; void SetQueueAlive(bool Alive) {m_bAlive = Alive;}; }; /* template class CAutoDeleteJobValue { public: CAutoDeleteJobValue(_TQUVALUE value){m_value = value;}; virtual ~CAutoDeleteJobValue(void) {delete m_value;}; _TQUVALUE m_value; }; */ /************************************************************************************************** ÀÛ¼ºÀÏ: 2009-04-28 ÀÛ¼ºÀÚ: ¹®»óÇö (youngmoon@webzen.co.kr) ¼³¸í: Àâ Å¥¸¦ °ü¸®Çϴ Ŭ·¡½º (Æ÷ÀÎÆ® ŸÀÔ) **************************************************************************************************/ template class CPtrQueue { public: CPtrQueue(void) : m_bAlive(false) {}; virtual ~CPtrQueue(void) {}; protected: std::list<_TQUVALUE> m_Que; //Á¤·®Â÷°¨, Á¤¾× ±â°£ ¸¸·á, ¶óÀ̺ê üũ¸¦ °ü¸®ÇÑ´Ù. WZPUBLIC::CriticalSection m_cs; //m_JobQue ÀÇ µ¿±âÈ­ °´Ã¼ public: //ÀÛ¾÷À» Å¥¿¡ ³Ö´Â´Ù. void push(_TQUVALUE job) { autolock(m_cs); m_Que.push_back(job); }; //ÀÛ¾÷À» Å¥¿¡¼­ ²¨³»¿Â´Ù. bool pop(_TQUVALUE& job) { autolock(m_cs); if(!m_Que.empty()) { job = m_Que.front(); m_Que.pop_front(); return true; } return false; }; //Å¥¸¦ ºñ¿î´Ù. void clear() { autolock(m_cs); m_Que.clear(); }; private: bool m_bAlive; // Å¥¸¦ »ç¿ëÇØµµ µÇ´ÂÁö ¿©ºÎ¸¦ °¡Áø´Ù. public: bool GetQueueAlive() {return m_bAlive;}; void SetQueueAlive(bool Alive) {m_bAlive = Alive;}; };