2010-06-03 6 views
5
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); 

Estoy un poco confundido sobre el maxevents parámetro. Digamos que quiero escribir un servidor que pueda manejar hasta 10k conexiones. ¿Definiría maxevents como 10000, o debería ser menor por alguna razón?epoll_wait: maxevents

Respuesta

9

Maxevents es solo la longitud de la matriz struct epoll_events apuntada por *events.

Si el núcleo tiene más que ese número de eventos para alimentar a su programa en ese momento, verá que no debería porque no espera que se devuelvan muchos en ese _wait en particular.

Probablemente necesite experimentar con el tamaño óptimo de esto para su programa. El tamaño óptimo puede incluso diferir según la arquitectura. Para pequeños números de descriptores de archivos sondeados, puede simplemente establecer maxevents en la cantidad de archivos (y dimensionar la matriz events en consecuencia), pero la probabilidad de que todos los archivos necesiten atención al mismo tiempo es baja, por lo que probablemente pueda para usar un valor más bajo maxevents.