Existe alguna forma para que múltiples procesos compartan un socket de escucha?
En la programación de socket, crea un socket de escucha y luego, para cada cliente que se conecta, obtiene un socket de flujo normal que puede usar para manejar la solicitud del cliente. El sistema operativo gestiona la cola de conexiones entrantes detrás de escena.
Dos procesos no pueden vincularse al mismo puerto al mismo tiempo, de forma predeterminada, 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 todos se unan al socket, y así 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 inactivo aceptaría ese cliente.
Esto permitiría que cada proceso tenga una implementación muy simple, de un solo subproceso, que no comparta nada a menos que a través de la memoria compartida explícita, y el usuario pueda 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 solo sean visibles para un subproceso a la vez, o que sean absolutamente inmutables, y los idiomas más populares y los tiempos de ejecución carecen de soporte integrado para gestionar esta complejidad.
l iniciar un puñado de procesos de trabajo idénticos, obtendría un sistema concurrente en el que eldefect no se comparte, por lo que es mucho más fácil crear una implementación correcta y escalable.