Розбираємося, чому блокувальні операції (введення, диск, мережа, бази) погіршують відгук інтерфейсу і «з’їдають» пул потоків на серверах, як їх розпізнати та чим замінити. Практичні приклади з
Console.ReadLine(),
Thread.Sleep,
HttpClient; наочна таблиця «що блокує, а що ні» і вступ до сучасного асинхронного підходу на базі
async/
await.