En la programación de sockets, creas un socket de escucha y luego, para cada cliente que se conecta, obtienes un socket de flujo normal que puedes usar para manejar la solicitud del cliente. El sistema operativo gestiona la cola de conexiones entrantes detrás de escena.
Dos procesos no se pueden vincular al mismo puerto al mismo tiempo, por defecto, de todos modos.
Me pregunto si hay una manera (en cualquier sistema operativo conocido, especialmente Windows) de iniciar múltiples instancias de un proceso, de modo que todas se unan al socket y, por lo tanto, compartan efectivamente la cola. Cada instancia de proceso podría ser de un solo subproceso; simplemente se bloquearía al aceptar una nueva conexión. Cuando un cliente se conecta, una de las instancias de proceso inactivas acepta a ese cliente.
Esto permitiría que cada proceso tuviera una implementación de un solo subproceso muy simple, sin compartir nada a menos que a través de una memoria compartida explícita, y el usuario podría ajustar el ancho de banda de procesamiento iniciando más instancias.
¿Existe tal característica?
Editar: Para aquellos que preguntan "¿Por qué no usar hilos?" Obviamente, los hilos son una opción. Pero con varios subprocesos en un solo proceso, todos los objetos se pueden compartir y se debe tener mucho cuidado para garantizar que los objetos no se compartan o que solo sean visibles para un subproceso a la vez, o que sean absolutamente inmutables, y la mayoría de los lenguajes y lenguajes populares los tiempos de ejecución carecen de soporte integrado para gestionar esta complejidad.
Al iniciar un puñado de procesos de trabajo idénticos, obtendría un sistema concurrente en el que el valor predeterminado es no compartir, lo que facilita mucho la creación de una implementación correcta y escalable.