У програмуванні сокетів ви створюєте сокет для прослуховування, а потім для кожного клієнта, який підключається, ви отримуєте звичайний сокет потоку, який можна використовувати для обробки запиту клієнта. ОС управляє чергою вхідних з'єднань за лаштунками.
Два процеси не можуть одночасно прив’язатись до одного порту - так чи інакше за замовчуванням.
Цікаво, чи є спосіб (у будь-якій відомій ОС, особливо Windows) запустити кілька екземплярів процесу, наприклад, щоб усі вони прив’язувались до сокета, і тому вони ефективно ділилися чергою. Тоді кожен екземпляр процесу може бути однопоточним; він просто заблокував би, приймаючи нове з'єднання. Коли клієнт підключається, один із неактивних екземплярів процесу приймає цього клієнта.
Це дозволило б кожному процесу мати дуже просту, однопотокову реалізацію, не ділившись нічим, окрім явної спільної пам'яті, і користувач міг би регулювати пропускну здатність обробки, запускаючи більше екземплярів.
Чи існує така особливість?
Редагувати: Для тих, хто запитує "Чому б не використовувати нитки?" Очевидно, що нитки - це варіант. Але з кількома потоками в одному процесі всі об’єкти можна спільно використовувати, і слід подбати про те, щоб об’єкти або не були спільними, або були видимими лише для одного потоку за раз, або були абсолютно незмінними, і найпопулярніші мови та час виконання не має вбудованої підтримки для управління цією складністю.
Запустивши кілька однакових робочих процесів, ви отримаєте одночасну систему, в якій за замовчуванням не передбачено спільний доступ, що значно полегшує створення правильної та масштабованої реалізації.