Согласно моему познанию 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
тоже. И для этого
организуется конкурентность, то есть, наш единственный поток
попеременно будет переключаться с одного запроса на другой.Я в начале отметил "... и если сильно не углубляться в детали" и возможно какие-то детали я не знаю и хотел бы узнать. А пока, я не понимаю, разве предложенная вторая однопоточная модель не имеет место быть? Зачем нужны эти вторичные потоки, ведь процессор так и так только один? Почему он не может с одним потоком "прыгать" с запроса на запрос и попеременно обрабатывать их?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть generic метод преобразующий IQueryable<T> и возвращающий IOrderedQuerable<T> при помощи Linq-to-Entities
Пытаюсь как тут добавить ReactJS к проекту, но при добавлении этой строки:
У меня есть несколько скриптов, в одном выполняется в Awake парсинг xml, и значения заносятся в Dictionary, а в других выполняется получение значения...