А что такое блокирование, блокировки это чикання чогось.async, await не блокирующий потому что он использует потоки
Нет. Блокирующий код — код, который занимает поток, но при этом не выполняет полезную работу.
var a = 1 + 2
var b = a + 3
Код выше синхронный, но не блокирующий, потому что всегда занят полезный работой.
var a = RemoteServer.Add(1, 2)
var b = RemoteServer.Add(a, 3)
Код выше такой же синхронный, но при это блокирующий. Потому что поток ничего не делает, пока запрос доставляется серверу, пока сервер считает ответ, который потом возвращается.
Да, в обоих ситуациях ОС может отнять на время у нашего приложения поток для своих задач. Но это другой уровень абстракции, который нас не волнует в данном случае.