Na programação de soquete, você cria um soquete de escuta e, para cada cliente que se conecta, obtém um soquete de fluxo normal que pode ser usado para lidar com a solicitação do cliente. O sistema operacional gerencia a fila de conexões de entrada nos bastidores.
Dois processos não podem se vincular à mesma porta ao mesmo tempo - por padrão, de qualquer maneira.
Estou me perguntando se há uma maneira (em qualquer sistema operacional conhecido, especialmente Windows) para iniciar várias instâncias de um processo, de modo que todas elas se liguem ao soquete e, assim, compartilhem efetivamente a fila. Cada instância de processo pode então ter um único encadeamento; ele apenas bloquearia ao aceitar uma nova conexão. Quando um cliente se conectava, uma das instâncias de processo ociosas aceitaria esse cliente.
Isso permitiria que cada processo tivesse uma implementação de thread única muito simples, sem compartilhar nada, a menos que por meio de memória compartilhada explícita, e o usuário seria capaz de ajustar a largura de banda de processamento iniciando mais instâncias.
Esse recurso existe?
Edit: Para aqueles que perguntam "Por que não usar tópicos?" Obviamente, os tópicos são uma opção. Mas com vários threads em um único processo, todos os objetos são compartilháveis e muito cuidado deve ser tomado para garantir que os objetos não sejam compartilhados ou sejam visíveis apenas para um thread de cada vez, ou sejam absolutamente imutáveis, e as linguagens mais populares e tempos de execução carecem de suporte integrado para gerenciar essa complexidade.
Ao iniciar um punhado de processos de trabalho idênticos, você obteria um sistema simultâneo no qual o padrão é nenhum compartilhamento, tornando muito mais fácil construir uma implementação correta e escalável.