Зачем использовать асинхронные запросы вместо большого пула потоков?

Во время Techdays здесь, в Нидерландах, Стив Сандерсон выступил с докладом оC # 5, ASP.NET MVC 4 и асинхронный веб.

Он объяснил, что, когда выполнение запросов занимает много времени, все потоки из пула потоков становятся занятыми, и новые запросы должны ждать. Сервер не может справиться с нагрузкой, и все замедляется.

Затем он показал, как использование асинхронных веб-запросов повышает производительность, потому что работа затем делегируется другому потоку, и пул потоков может быстро отвечать на новые входящие запросы. Он даже продемонстрировал это и показал, что 50 одновременных запросов сначала занимали 50 * 1 с, но с асинхронным поведением всего 1,2 с.

Но, увидев это, у меня остались вопросы.

Почему мы не можем просто использовать больший пул потоков? Не используется ли async / await для запуска другого потока медленнее, чем просто увеличение пула потоков с самого начала? Это не похоже на то, что сервер, на котором мы работаем, внезапно получает больше потоков или что-то еще?

Запрос от пользователя все еще ожидает завершения асинхронного потока. Если поток из пула делает что-то еще, как поток «UI» остается занятым? Стив упомянул кое-что о «умном ядре, которое знает, когда что-то закончено». Как это работает?

Ответы на вопрос(3)

Ваш ответ на вопрос