我有一个启动和处理排队项的应用程序。这些项目以定时器帧速率处理。这是使用ACE_Reactor类实现的。
启动这一过程的代码是:
void start() {
ACE_Reactor::instance()->schedule_timer( this, NULL, ACE_Time_Value(0,1000), ACE_Time_Value(0,1000) );
ACE_Reactor::instance()->run_reactor_event_loop();
}
handle_timeout (const ACE_Time_Value ¤t_time, const void *act) {
<Process item>
If (more items left)
return 0;
else
return -1;
}这将导致调用handle_timeout()方法,然后该方法将处理队列中的一个项。当队列中有更多的项时,回调返回0。当队列为空时,回调返回-1,这将停止反应堆循环。
问题是当方法返回时-1 run_reactor_event_loop();仍处于阻塞状态。我希望应用程序完成返回状态代码并退出。我很难找到好的文档。
我是不是遗漏了什么?
发布于 2014-07-30 08:28:00
返回值并不意味着反应堆结束运行。为了让run_reactor_event_loop()返回,您必须调用某个ACE_Reactor::instance ()->end_reactor_event_loop (),例如,参见包装器/实例/APG/反应堆下面的ACE示例
https://stackoverflow.com/questions/25025268
复制相似问题