сбой туза register_handler - PullRequest
       25

сбой туза register_handler

1 голос
/ 20 февраля 2012

Я использую функцию ace register_handler в системе с несколькими потоками.Время от времени, register_handler терпит неудачу.Я распечатал дескриптор файла (вызвав функцию get_handle) и заметил, что когда дескриптор файла превышает 1000, get_handle завершается ошибкой.Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 20 февраля 2012

Я не эксперт 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. Если вы не предоставили переопределения, вы знаете, что должны его реализовать.
...