Przede wszystkim, wnioski mogą być obsługiwane niezależnie. Jednak serwery chcą jednocześnie obsługiwać je w celu zachowania liczby żądań, które można obsłużyć na czas maksymalnie.
Implementacja tej koncepcji współbieżności zależy od serwera WWW.
Niektóre implementacje mogą mieć ustaloną liczbę wątków lub procesów obsługi żądań. Jeśli wszystkie są w użyciu, dodatkowe żądania muszą poczekać, aż zostaną obsłużone.
Inną możliwością jest zrobienie procesu lub wątku dla każdego żądania. Rozgałęzienie procesu dla każdego żądania prowadzi do absurdalnego obciążenia pamięci i cpu. Tarła lekkich nici jest lepsza. Dzięki temu możesz obsłużyć setki klientów na sekundę. Jednak wątki również zwiększają koszty zarządzania, objawiając się dużą ilością pamięci i zużyciem procesora.
Do obsługi tysięcy klientów na sekundę architektura sterowana zdarzeniami oparta na asynchronicznych programach typu coroutines jest najnowocześniejszym rozwiązaniem. Umożliwia serwerowi obsługę klientów w wysokim tempie, bez pojawiania się milionów wątków. Na stronie Wikipedia page of the so-called C10k problem znajduje się lista serwerów internetowych. Wśród nich wielu korzysta z tej architektury.
Coroutines są również dostępne w języku Python. Spójrz na http://www.gevent.org/. Dlatego aplikacja Python WSGI oparta na np. uWSGI + gevent jest niezwykle wydajnym rozwiązaniem.
Jakie udostępnianie stanu? Głównym celem żądań internetowych jest to, że każdy jest niezależny, nie ma wspólnego stanu. –