epoll_wait: maxevents - PullRequest
       24

epoll_wait: maxevents

9 голосов
/ 04 июня 2010
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

Я немного озадачен параметром maxevents . Допустим, я хочу написать сервер, который может обрабатывать до 10 тыс. Соединений. Тогда я бы определил maxevents как 10000 или по какой-то причине он должен быть ниже?

1 Ответ

13 голосов
/ 04 июня 2010

Maxevents - это длина массива struct epoll_events, на которую указывает *events.

Если ядро ​​имеет больше чем это количество событий для подачи в вашу программу в это время, оно увидит, что этого не должно быть, потому что вы не ожидаете, что столько будет возвращено в этом конкретном _wait.

Возможно, вам придется поэкспериментировать с оптимальным размером для вашей программы. Оптимальный размер может даже отличаться в зависимости от архитектуры. Для небольшого числа опрашиваемых файловых дескрипторов вы можете легко установить maxevents для количества файлов (и соответственно размер массива events), но вероятность того, что все файлы одновременно требуют внимания, низкая, поэтому вы вероятно, сможет использовать более низкое значение maxevents.

...