haitao:
问题集中到:线程池释放时,循环连续关闭所有线程,如果循环中加延时,线程的run里的跳出死循环的代码可能执行不到
[阅读: 1222] 2004-12-17 16:14:37
问题集中到:线程池释放时,循环连续关闭所有线程,如果循环中加延时,线程的run里的跳出死循环的代码可能执行不到
好像不是我的日志的处理方法的问题
void CThreadPool::Destroy()
{
list<CThread* >::iterator bIter, eIter;
commlogStr("CThreadPool::Destroy()[");
bIter = m_threadList.begin();
eIter = m_threadList.end();
while (bIter != eIter)
{ //加了Sleep(50);则线程的run里的跳出死循环的代码可能执行不到,下面的exit1、exit2、exit3倒是总会被执行
commlogStr2(static_cast<CThread* >(*bIter)->getname(),"exit1");
static_cast<CThread* >(*bIter)->Exit();
commlogStr2(static_cast<CThread* >(*bIter)->getname(),"exit2");
delete static_cast<CThread* >(*bIter);
commlogStr("exit3");
bIter++;
}
m_threadList.clear();
commlogStr("CThreadPool::Destroy()]");
}