1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include "stdafx.h"
- #include "ThreadQueue.h"
- #include "Thread.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- CThreadQueue::CThreadQueue(){}
- CThreadQueue::~CThreadQueue(){}
- /************************************************************************/
- /*
- 函数:Release
- 描述:清除所有元素
- 参数:
- 返回:
- */
- /************************************************************************/
- void CThreadQueue::Release()
- {
- CAutoLock autolock(&m_l);
- std::list<CThreadBase*>::iterator iter = m_list.begin();
- for(;iter != m_list.end();)
- {
- CThreadBase* p = (*iter);
- if(p != NULL)
- {
- p->Exit();
- delete p;
- p = NULL;
- }
- ++iter;
- }
- m_list.clear();
- }
- /************************************************************************/
- /*
- 函数:Delete
- 描述:删除
- 参数:
- IN CONST CThreadBase* p
- 返回:1成功,0失败
- */
- /************************************************************************/
- int CThreadQueue::Delete(IN CThreadBase*& p)
- {
- CAutoLock autolock(&m_l);
- std::list<CThreadBase*>::iterator iter = m_list.begin();
- for(;iter != m_list.end();)
- {
- if((*iter)->GetThreadID() == p->GetThreadID())
- {
- p->Stop();
- // delete (*iter);
- m_list.erase(iter);
- return 1;
- }
- ++iter;
- }
- return 0;
- }
- /************************************************************************/
- /*
- 函数: Remove
- 描述: 删除某一元素
- 参数:
- 返回:
- */
- /************************************************************************/
- void CThreadQueue::Remove(IN CThreadBase*& pThread)
- {
- CAutoLock autots(&m_l);
- std::list<CThreadBase*>::iterator iter = m_list.begin();
- for(;iter != m_list.end();)
- {
- if((*iter)->GetThreadID() == pThread->GetThreadID())
- {
- m_list.erase(iter);
- return;
- }
- ++iter;
- }
- }
|