中国开发网: 论坛: 程序员情感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()]");
}
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


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