ASP.NET MVC and Web API - Comparison of Async / Sy...
Есть пул потоков.
Пришел запрос - достали поток из пула, и он начал обрабатывать запрос.
Если поток встретил await (запрос в БД например, не CPU bound операция) и результат не доступен (может быть доступен сразу), то он ушел обратно в пул. Когда await получит результат, то из пула достанут поток и передадут ему результат и он продолжит выполнение.
Если поток встретит запрос в БД, но не будет await, то он останется ждать результата, в пул не вернется, не сможет обслуживать другие запросы, просто будет ждать.
Пример из жизни:
Заказали пиццу по телефону.
- синхронно - идем к двери и ждем звонка от курьера.
- асинхронно - занимается другими делами, когда курьер доставит пиццу он позвонит в дверь и мы подойдем за ней.
Асинхронность != многопоточность, это ее часть.
What is the difference between asynchronous progra...