Dans la programmation de socket, vous créez un socket d'écoute, puis pour chaque client qui se connecte, vous obtenez un socket de flux normal que vous pouvez utiliser pour gérer la demande du client. Le système d'exploitation gère la file d'attente des connexions entrantes dans les coulisses.
Deux processus ne peuvent pas se lier au même port en même temps - par défaut, de toute façon.
Je me demande s'il existe un moyen (sur n'importe quel système d'exploitation connu, en particulier Windows) de lancer plusieurs instances d'un processus, de sorte qu'elles se lient toutes au socket et qu'elles partagent ainsi efficacement la file d'attente. Chaque instance de processus pourrait alors être à un seul thread; il bloquerait simplement lors de l'acceptation d'une nouvelle connexion. Lorsqu'un client se connectait, l'une des instances de processus inactives accepterait ce client.
Cela permettrait à chaque processus d'avoir une implémentation très simple, à un seul thread, ne partageant rien sauf via une mémoire partagée explicite, et l'utilisateur serait en mesure d'ajuster la bande passante de traitement en démarrant plus d'instances.
Une telle fonctionnalité existe-t-elle?
Edit: Pour ceux qui demandent "Pourquoi ne pas utiliser les threads?" Les threads sont évidemment une option. Mais avec plusieurs threads dans un seul processus, tous les objets peuvent être partagés et il faut veiller à ce que les objets ne soient pas partagés, ou ne soient visibles que par un thread à la fois, ou soient absolument immuables, et les langages les plus populaires et Les runtimes n'ont pas de support intégré pour gérer cette complexité.
En démarrant une poignée de processus de travail identiques, vous obtiendrez un système simultané dans lequel la valeur par défaut est pas de partage, ce qui facilite grandement la création d'une implémentation correcte et évolutive.