Согласно моему познанию ASP.NET Core и если сильно не углубляться в детали, то на сегодняшний день обработка HTTP-запросов на одноядерном процессоре происходит следующим образом:
R1) и его нужно обработать. ThreadPool береться Поток Исполнения (T1) и ему передается этот запрос R1 для дальнейшей обработки. Если в ThreadPool не было (случай когда это первый запрос, который обрабатывает приложение со времени запуска или все потоки заняты) свободного потока, то он создается.R1 еще не закончилась, но приложению прилетел другой запрос (R2).ThreadPool берётся другой поток T2 и уже обработкой R2-запроса займётся T2.А теперь представим, что приложение ASP.NET Core имеет только один поток T1.
R1 и T1 принялся к его обработке.R1 еще не закончилась, но приложению прилетает второй
запрос R2.T1 необходимо обработать R2 тоже. И для этого
организуется конкурентность, то есть, наш единственный поток
попеременно будет переключаться с одного запроса на другой.Я в начале отметил "... и если сильно не углубляться в детали" и возможно какие-то детали я не знаю и хотел бы узнать. А пока, я не понимаю, разве предложенная вторая однопоточная модель не имеет место быть? Зачем нужны эти вторичные потоки, ведь процессор так и так только один? Почему он не может с одним потоком "прыгать" с запроса на запрос и попеременно обрабатывать их?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей