中国开发网: 论坛: 程序员情感CBD: 贴子 66385
haitao
问题集中到:线程池释放时,循环连续关闭所有线程,如果循环中加延时,线程的run里的跳出死循环的代码可能执行不到
问题集中到:线程池释放时,循环连续关闭所有线程,如果循环中加延时,线程的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()]");
}

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录