IO Completion Port
-
hallo,
hab ne grundsätzliche frage wie portabel ist IO Completion Port? Wie handeln emule Server mehrere 10.000 Clients? auch mit IO Completion Port welche methode wäre nocht sinnvoll, select? thread sind wohl eher zu langsam? Wie arbeiten hier Linux, Unix Server? Wie würdet irh so einen Server in C++ realisieren der so viele Clients verwalten soll? n8
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
IO Completion Ports sind doch asynchrones I/O? Unter Unix gibt es natürlich ähnliche Sachen. Ein paar interessante Slides zu dem Thema dürften folgendes sein: http://bulk.fefe.de/scalable-networking.pdf
Warum sollten Threads zu langsam sein? Threads haben doch sogar den Vorteil, das sie besser skalierbar sind. Geht deinem Server die Puste aus, weil sich zu viele Leute verbinden, kannst du wunderbar durch weiter CPUs oä den Server entlasten.
-
Bei 10.000 Threads geht wohl jedem Server die Puste aus. Das ist echt nicht sehr performant. Für solche Mengen braucht man immer irgendwas select-artiges.
-
Ringding schrieb:
Bei 10.000 Threads geht wohl jedem Server die Puste aus. Das ist echt nicht sehr performant. Für solche Mengen braucht man immer irgendwas select-artiges.
Nein, Linux hat zB einen O(1)-Scheduler. Sprich der performt bei 1.000.000.000 Threads genauso schnell wie bei einem. Wenn dein Server zu langsam ist, dann musst du also nur mehr Prozessoren drauf packen und schon performt der besser. Event-I/O ist da nicht so skalierbar.
-
Thread Pool