Bei der Socket-Programmierung erstellen Sie einen Listening-Socket und erhalten dann für jeden Client, der eine Verbindung herstellt, einen normalen Stream-Socket, mit dem Sie die Client-Anforderung bearbeiten können. Das Betriebssystem verwaltet die Warteschlange eingehender Verbindungen hinter den Kulissen.
Zwei Prozesse können nicht gleichzeitig an denselben Port gebunden werden - jedenfalls standardmäßig.
Ich frage mich, ob es eine Möglichkeit gibt (unter einem bekannten Betriebssystem, insbesondere Windows), mehrere Instanzen eines Prozesses zu starten, sodass sie alle an den Socket gebunden sind und die Warteschlange effektiv gemeinsam nutzen. Jede Prozessinstanz könnte dann ein einzelner Thread sein. es würde nur blockieren, wenn eine neue Verbindung akzeptiert wird. Wenn ein Client verbunden ist, akzeptiert eine der inaktiven Prozessinstanzen diesen Client.
Dies würde es jedem Prozess ermöglichen, eine sehr einfache Single-Threaded-Implementierung zu haben, die nichts gemeinsam nutzt, außer durch expliziten gemeinsamen Speicher, und der Benutzer könnte die Verarbeitungsbandbreite anpassen, indem er mehr Instanzen startet.
Gibt es eine solche Funktion?
Bearbeiten: Für diejenigen, die fragen "Warum nicht Threads verwenden?" Offensichtlich sind Threads eine Option. Bei mehreren Threads in einem einzigen Prozess sind jedoch alle Objekte gemeinsam nutzbar, und es muss sorgfältig darauf geachtet werden, dass Objekte entweder nicht gemeinsam genutzt werden oder nur für jeweils einen Thread sichtbar sind oder absolut unveränderlich sind und die beliebtesten Sprachen und Sprachen verwenden Die Laufzeiten bieten keine integrierte Unterstützung für die Verwaltung dieser Komplexität.
Wenn Sie eine Handvoll identischer Worker-Prozesse starten, erhalten Sie ein gleichzeitiges System, in dem standardmäßig keine Freigabe erfolgt, was das Erstellen einer korrekten und skalierbaren Implementierung erheblich vereinfacht.