Frage
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
Ich bin ein wenig verwirrt über die Maxevents Parameter. Angenommen, ich möchte einen Server schreiben, der bis zu 10.000 Verbindungen verarbeiten kann. Würde ich definieren Maxevents Als 10000 dann oder sollte es aus irgendeinem Grund niedriger sein?
Lösung
Maxevents ist genau die Länge der struct epoll_events
Array zeigte auf durch *events
.
Wenn der Kernel mehr als diese Anzahl von Ereignissen hat, die Sie zu diesem Zeitpunkt Ihrem Programm einfügen können, wird er nicht erwarten, dass Sie nicht erwarten, dass viele in diesem speziellen zurückgegeben werden.
Sie müssen wahrscheinlich mit der optimalen Größe für Ihr Programm experimentieren. Die optimale Größe kann sich sogar durch Architektur unterscheiden. Für kleine Anzahl von Dateideskriptoren, die befragt werden, können Sie ganz einfach einfach festlegen maxevents
zur Anzahl der Dateien (und Größe der Größe events
Array entsprechend), aber die Wahrscheinlichkeit aller Dateien, die gleichzeitig Aufmerksamkeit benötigen, ist niedrig, sodass Sie wahrscheinlich einen niedrigeren verwenden können maxevents
Wert.