ace register_handler fails

ace register_handler fails

本文关键字:fails handler register ace      更新时间:2023-10-16

我在一个有多个线程的系统中使用ace register_handler函数。每隔一段时间,register_handler就会失败。我打印了文件描述符(通过调用get_handle函数),并注意到当文件描述符超过1000时,get_handl会失败。有人知道为什么吗?

我不是ACE专家。但似乎ACE_Event_Handler类中的默认实现每次都会返回错误。ACE源代码摘录:

ACE_HANDLE
ACE_Event_Handler::get_handle (void) const
{
  ACE_TRACE ("ACE_Event_Handler::get_handle");
  return ACE_INVALID_HANDLE;
}

派生类需要实现自己的。因此,如果您的类派生自类ACE_Event_Handler,则必须重写get_handle()方法才能获得有意义的结果:

ACE_HANDLE DerivedClass::get_handle(void) const
{
  return peer().get_handle();
}

我推荐你去

  1. 请验证是否在派生类中提供了该方法
  2. 如果是,请仔细检查其实现情况。我们的问题就在这里。(你能向我们提供更多关于你的实施的细节吗?)
  3. 如果您没有提供任何覆盖,那么您就知道必须实现它