epoll_create и epoll_wait

Меня интересовали параметры двух API epoll.

  1. epoll_create (int size) - в этом API размер определяется как размер пула событий. Но, похоже, что больше событий, чем размер все еще работает. (Я установил размер как 2 и заставил пул событий иметь 3 события... но он все еще работает!?) Поэтому мне было интересно, что на самом деле означает этот параметр, и мне было любопытно, какое максимальное значение имеет этот параметр.

  2. epoll_wait (int maxevents) - для этого API определение maxevents является простым. Тем не менее, я вижу отсутствие информации или советов о том, как определить этот параметр. Я ожидаю, что этот параметр будет изменен в зависимости от размера пула событий epoll. Любые предложения или советы будут отличными. Спасибо!

1 ответ

Решение

1.

"man epoll_create"

ОПИСАНИЕ...
       Размер не максимальный размер бэк-магазина, а просто подсказка
       в ядро ​​о том, как измерить внутренние структуры.  (Настоящее время,
       размер не используется; см. примечания ниже.)

ЗАМЕТКИ
       Начиная с Linux 2.6.8, аргумент size не используется, но должен быть больше
       чем ноль.  (Ядро динамически изменяет размер требуемой структуры данных
       без первоначальной подсказки.)

2.

Просто определите точное число самостоятельно, но имейте в виду, что небольшое количество может немного снизить эффективность.

Поскольку меньшее число присваивается параметру "maxevent", тем чаще вам, возможно, придется вызывать epoll_wait(), чтобы использовать все события, уже поставленные в очередь в epoll.

Другие вопросы по тегам