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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top