W programowaniu za pomocą gniazd tworzy się gniazdo nasłuchujące, a następnie dla każdego klienta, który się łączy, otrzymuje się normalne gniazdo strumieniowe, którego można użyć do obsługi żądań klienta. System operacyjny zarządza kolejką połączeń przychodzących w tle.
Dwa procesy nie mogą łączyć się z tym samym portem w tym samym czasie - w każdym razie domyślnie.
Zastanawiam się, czy istnieje sposób (w każdym dobrze znanym systemie operacyjnym, zwłaszcza Windows), aby uruchomić wiele instancji procesu, tak aby wszystkie łączyły się z gniazdem i efektywnie współdzieliły kolejkę. Każda instancja procesu może być wtedy jednowątkowa; po prostu blokowałby się przy akceptowaniu nowego połączenia. Gdy klient się połączył, jedna z bezczynnych instancji procesu zaakceptowałaby tego klienta.
Pozwoliłoby to każdemu procesowi mieć bardzo prostą, jednowątkową implementację, nie współużytkując niczego, chyba że poprzez jawną pamięć współdzieloną, a użytkownik byłby w stanie dostosować przepustowość przetwarzania, uruchamiając więcej instancji.
Czy taka funkcja istnieje?
Edycja: dla osób pytających „Dlaczego nie używać wątków?” Oczywiście wątki są opcją. Ale w przypadku wielu wątków w jednym procesie wszystkie obiekty można udostępniać i należy bardzo uważać, aby obiekty albo nie były udostępniane, albo były widoczne tylko dla jednego wątku na raz lub były absolutnie niezmienne, a najpopularniejsze języki i Środowiskom wykonawczym brakuje wbudowanej obsługi zarządzania tą złożonością.
Uruchamiając kilka identycznych procesów roboczych, można uzyskać system współbieżny, w którym domyślnie nie ma współużytkowania, co znacznie ułatwia zbudowanie poprawnej i skalowalnej implementacji.