epoll_create и epoll_wait
Меня интересовали параметры двух API epoll.
epoll_create (int size) - в этом API размер определяется как размер пула событий. Но, похоже, что больше событий, чем размер все еще работает. (Я установил размер как 2 и заставил пул событий иметь 3 события... но он все еще работает!?) Поэтому мне было интересно, что на самом деле означает этот параметр, и мне было любопытно, какое максимальное значение имеет этот параметр.
epoll_wait (int maxevents) - для этого API определение maxevents является простым. Тем не менее, я вижу отсутствие информации или советов о том, как определить этот параметр. Я ожидаю, что этот параметр будет изменен в зависимости от размера пула событий epoll. Любые предложения или советы будут отличными. Спасибо!
1 ответ
1.
"man epoll_create"
ОПИСАНИЕ... Размер не максимальный размер бэк-магазина, а просто подсказка в ядро о том, как измерить внутренние структуры. (Настоящее время, размер не используется; см. примечания ниже.) ЗАМЕТКИ Начиная с Linux 2.6.8, аргумент size не используется, но должен быть больше чем ноль. (Ядро динамически изменяет размер требуемой структуры данных без первоначальной подсказки.)
2.
Просто определите точное число самостоятельно, но имейте в виду, что небольшое количество может немного снизить эффективность.
Поскольку меньшее число присваивается параметру "maxevent", тем чаще вам, возможно, придется вызывать epoll_wait(), чтобы использовать все события, уже поставленные в очередь в epoll.