关闭

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

标签: ace_task wait函数 没有返回多线程
476人阅读 评论(0) 收藏 举报
关于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撰于上海)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8476次
    • 积分:166
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论