123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #include "stdafx.h"
- #include "EventPool.h"
- #include "msgdef.h"
- #include "EventQueue.h"
- #include "EventThread.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- CEventPool::CEventPool()
- {
- m_pThread = new CEventThread;
- m_pThread->SetSemaphoreNum(100000);
- m_pThread->Start();
- m_pEventQueue = new CEventQueue;
- }
- CEventPool::~CEventPool()
- {
- SafeRelease(m_pThread);
- ClearAllEvent();
- }
- /************************************************************************/
- /*
- 函数:AddEvent
- 描述:添加任务事件
- 参数:
- IN LPSEVENT lpEvent 任务事件
- 返回:1成功
- */
- /************************************************************************/
- int CEventPool::AddEvent(IN LPSEVENT lpEvent)
- {
- m_pEventQueue->Push_Back(lpEvent);
- m_lock.lock();
- ++m_dwEventSize;
- m_lock.unlock();
- return 1;
- }
- /************************************************************************/
- /*
- 函数:ClearAllEvent
- 描述:清除所有事件
- 参数:
- 返回:
- */
- /************************************************************************/
- void CEventPool::ClearAllEvent()
- {
- if(m_pEventQueue)
- m_pEventQueue->Clear();
- SafeRelease(m_pEventQueue);
- }
- //
- /************************************************************************/
- /*
- 函数:TakeOutEvent
- 描述:从任务队列取出任务
- 参数:
- 返回:成功返回任务,失败为NULL
- */
- /************************************************************************/
- LPSEVENT CEventPool::TakeOutEvent()
- {
- m_lock.lock();
- DWORD dwSize = m_dwEventSize;
- m_lock.unlock();
- if(dwSize == 0)
- return NULL;
- LPSEVENT lp = m_pEventQueue->Pop_Front();
- if(lp == NULL)
- return NULL;
- m_lock.lock();
- --m_dwEventSize;
- m_lock.unlock();
- return lp;
- }
- /************************************************************************/
- /*
- 函数:GetEventNum
- 描述:获取事件数量
- 参数:
- 返回:任务数量
- */
- /************************************************************************/
- int CEventPool::GetEventNum()
- {
- m_lock.lock();
- DWORD dwSize = m_dwEventSize;
- m_lock.unlock();
- return dwSize;
- }
- /************************************************************************/
- /*
- 函数:DeleteEvent
- 描述:删除事件
- 参数:
- 返回:任务数量
- */
- /************************************************************************/
- void CEventPool::DeleteEvent()
- {
- m_pEventQueue->Pop_Front();
- }
- /************************************************************************/
- /*
- 函数:Terminate
- 描述:终止线程
- 参数:
- 返回:
- */
- /************************************************************************/
- void CEventPool::Terminate()
- {
- m_pThread->Exit();
- }
|