关于ace_task中wait函数一直没有返回一种解决方法(正解)

关于ace_task中wait函数一直没有返回一种解决方法(正解)


在软件退出时调用wait(),但一直在这里等待未正常返回
问题分析:
1.因我们的源代码是用SVN管理的。回退到以前的一个版本时,未出现此问题。所以问题是于新近改的代码
2.比较后,发现下列代码
return this->activate();
改为了
return this->activate(THR_NEW_LWP | THR_JOINABLE | THR_INHERIT_SCHED,
                          ConfigManager::Instance()->get_HEARTBEAT_THREAD_COUNT());
原因是要支持多线程。这里的get_HEARTBEAT_THREAD_COUNT()就是指定有多少个工作线程
3.上述代码改回到原来的,wait()能正常返回
4.原因分析:每个工作线程都需要收到退出svc()函数的消息。

5.解决方法:根据建立时的get_HEARTBEAT_THREAD_COUNT()给出的线程数,putq()多个退出svc()的消息,问题得到解决


(成海2013-12-04撰于上海)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值