Спасибо за отличную цитату!
граммировании сокетов вы создаете сокет прослушивания, а затем для каждого подключаемого клиента вы получаете обычный сокет потока, который вы можете использовать для обработки запроса клиента. ОС управляет очередью входящих соединений за кулисами.
Два процесса не могут связываться с одним и тем же портом одновременно - по умолчанию, в любом случае.
Мне интересно, есть ли способ (на любой известной ОС, особенно Windows) запустить несколько экземпляров процесса, чтобы все они связывались с сокетом и эффективно разделяли очередь. Каждый экземпляр процесса может быть однопоточным; это просто заблокировало бы при принятии нового соединения. Когда клиент подключился, один из бездействующих экземпляров процесса принял бы этого клиента.
Это позволило бы каждому процессу иметь очень простую однопоточную реализацию, не разделяющую ничего, кроме как через явную общую память, и пользователь мог бы регулировать пропускную способность обработки, запуская больше экземпляров.
Существует ли такая функция?
Редактировать: Для тех, кто спрашивает "Почему бы не использовать темы?" Очевидно, что темы являются опцией. Но с несколькими потоками в одном процессе все объекты могут использоваться совместно, и необходимо соблюдать осторожность, чтобы гарантировать, что объекты либо не являются общими, либо видны только одному потоку за раз, либо являются абсолютно неизменяемыми, а большинство популярных языков и Во время выполнения отсутствует встроенная поддержка для управления этой сложностью.
Запустив несколько идентичных рабочих процессов, вы получите параллельную систему, в которойпо умолчанию не делиться, что делает намного проще построить правильную и масштабируемую реализацию.