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

来源:互联网 发布:Java processstartinfo 编辑:程序博客网 时间:2024/05/18 20:12
关于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撰于上海)

原创粉丝点击