TGViewer
Type-Safe Thoughts Type-Safe Thoughts @ts_thoughts · 110 subscribers
Post #45 274
👀 Аж в феврале вышло 1 превью .NET 11, ровно тогда же я почитал релиз ноты и захотел написать пост... долго же я собирался. Что же меня так зацепило? Оптимизация асинхронной модели, хотя это не единственная интересная фича, про нее и будет этот вводный пост

🤯 Издревле (.NET Framework 4.5 – 2012 год) так сложилось, что механизм асинхронности в C# реализован через явную пометку пользователем цвета функций – через ключевое слово async, и такое же явное обозначение точки приостановки (suspension) – через ключевое слово await. Многими даже считается, что именно C# стал основным популяризатором такого подхода в свое время.

🚀 Тем не менее время шло, и в новых языках – необремененных еще необходимостью поддерживать обратную совместимость с 100500 предыдущими версиями – стали появляться более эффективные, но менее гибкие подходы. Главным контрпримером обычно выступает Go с легковесными потоками, которые планируются рантаймом поверх обычных тредов операционной системы. При таком подходе программист может не задумываться о всем вышеперечисленном, вплоть до полного непонимания что такое асинхронность. Сравнивать эти модели с точки зрения удобства и гибкости сейчас не будем – это тема как минимум отдельного поста (ставьте классы)

😭 А вот с точки зрения стоимости исполнения у C# есть проблемы: за выразительность приходится платить достаточно сложной инфраструктурой под капотом. Так что на перфоманс-сравнение с Go, мне как C# разработчику, больно смотеть. Вот и разработчики из Майкрософта, кажется, так подумали и решили наконец что-то сделать. Этим “что-то” стал runtime-async – оптимизация, которая сильно облегчает рантайму обработку асинхронных операций, не меняя с точки зрения пользователя ни синтаксис, ни семантику существующего async/await.

😨 Хоть runtime async пока и находится в превью, очень интересно видеть, что результаты некоторых бенчмарков говорят об улучшении не просто на проценты, а в разы! Так, в последнем превью мы получили 6357.1 ms → 457.1 ms времени выполнения для async методов, возобновляемых после OSR-оптимизации.

Интересно разобрать откуда такой выигрыш и как это работает под капотом?
More from @ts_thoughts
  1. Sep 22, 2026Открываем охоту на кабанчика 🐗 BookClub DotNet возвращается с третьим сезоном и в новом с…
  2. Sep 18, 2026Post #63
  3. Sep 13, 2026Post #62
  4. Sep 8, 2026Продолжаю гастроли и 3–4 октября выступаю на «Стачке» в Питере :) Расскажу про Runtime Asy…
  5. Sep 6, 2026Post #58
  6. Sep 6, 2026Mea maxima culpa 2/2 На работе проводить постмортем сильно проще, чем в жизни. После техни…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →