我正在使用 ace 接受器来监听 TCP 端口。我的类继承自 My_Svc_Handler 并隐含了 My_Svc_Handler 类的函数 int open (void *)。在我看到的所有示例中,在 open 函数中,它们注册了反应器:
ACE_Reactor::instance()->register_handler(this,
ACE_Event_Handler::READ_MASK);
我不明白为什么我们需要注册?我已经有一个反应堆在等待一个事件。这是我在 main 中定义的:
typedef ACE_Acceptor<My_Svc_Handler,ACE_LSOCK_ACCEPTOR> MyAcceptor;
int main(int argc, char* argv[]){
ACE_UNIX_Addr addr("/tmp/addr.ace");
MyAcceptor acceptor(address, ACE_Reactor::instance());
while(1) /* Start the reactors event loop */
ACE_Reactor::instance()->handle_events();
}
我想我不明白什么时候调用 open 函数。
我对这种方式还有另一个问题。是否有另一种方式不运行 while(1) ?