2 Stimmen

Verbessert sich die Leistung von Multithreading-Servern, die große Mengen an Anfragen verarbeiten, durch I/O Completion Ports (Windows) oder Asynchronous I/O (AIO)?

Ich möchte I/O Completion Ports für Windows und Asynchronous I/O (AIO) für Solaris- und Linux-Versionen meiner Serveranwendung verwenden. Der Anwendungsserver ist multithreaded und kann viele gleichzeitige TCP-Verbindungen akzeptieren und viele Anfragen pro Verbindung verarbeiten. Sind diese Kriterien gut genug, um die neueste AIO? zu verwenden? Gibt es eine Standardisierung, mit der ein Code für alle Plattformen verwendet werden kann?

Danke, Naga

4voto

Len Holgate Punkte 20590

Jede Anfrage wird bearbeitet separaten abgetrennten Thread bearbeitet.

So funktionieren die I/O Completion Ports unter Windows nicht. Sie ermöglichen es Ihnen, eine sehr kleine Anzahl von Threads zu verwenden, um große Mengen von E/A zu verarbeiten.

Zum Beispiel hier: http://www.lenholgate.com/blog/2005/10/the-64000-connection-question.html Ich spreche von der Handhabung von 64.000 gleichzeitigen aktiven TCP-Verbindungen mit etwa 4 Threads...

Für Linux ist der richtige Weg wohl die Verwendung von libevent .

Für plattformübergreifende Anwendungen wird sicher jemand Folgendes vorschlagen ASIO .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X