Lightstorm hat geschrieben:
Gibt es eine Möglichkeit mehrere TCP Verbindungen über einen einzigen Thread zu verarbeiten ohne das eine Verbindung die anderen blockiert?
Async bzw. nonblocking IO wäre das Stichwort nach dem du suchen musst. Eventmachine kann das z.B.
Lightstorm hat geschrieben:
Das mag für kleine Anwendungen gut sein aber bei vielen Verbindungen gilt es doch als schlechte Architektur wenn hunderte oder tausende von Threads entstehen.
Nun, das ist eine Diskussion die eigentlich nicht so wirklich durch ist. Das hängt vom Use-Case ab. Wenn auf allen Verbindungen was passiert ist die Multi-Threaded-Variante wahrscheinlich sogar effizienter, insbesondere z.B. unter einer Runtime die Threads sehr effizient implementiert wie z.B. JRuby. Ein Thread braucht halt Ressourcen wenn er existiert, aber der Overhead ist seit geraumer Zeit signifikant gesunken.
Generell beachten solltest du dass du für jede TCP-Verbindung einen offenen Socket brauchst und damit schnell an andere Betriebssystemlimits kommst (Open files z.B.), aber da hilft dir auch nonblocking IO nicht weiter.