ACE_Reactor::instance()->run_reactor_event_loop() 放在主线程中,定时器就正常;放在子线程中,定时器就不起作用。
解决方法:
set the owner of the reactor to the identity of the thread that runs the event loop
int svc()
{
int nRet = 0;
/* select_reactor 可能在阻塞过程中被信号中断(errno=4) */
while(ACE_Reactor::instance()->reactor_event_loop_done() == 0)
{
ACE_Reactor::instance()->owner( ACE_OS::thr_self() );
nRet = ACE_Reactor::instance()->run_reactor_event_loop();
if(nRet >= 0)
break;
}
}
阅读(4366) | 评论(0) | 转发(0) |