Цепочка A → B → C: компилятор против рантайма

В C происходит await Task.Yield(). Слева — машины состояний компилятора (главы 1–3), справа — runtime async (глава 14). Объекты в куче подсвечены.

Машины состояний (компилятор)

стек потока
куча

Runtime async (JIT)

стек потока
куча
Замер (Ubuntu 26.04, 2 ядра, цепочка из 3 методов)без приостановки, нсс приостановкой, нсБ при приостановке
.NET 10.0.12, машины состояний34–39580–670288
.NET 10.0.12, runtime async6,5–111000–1430322
.NET 11 RC1, машины состояний54–841150–1860285–287
.NET 11 RC1, runtime async29–50430–770160