Как стать автором
Обновить

Как на самом деле Async/Await работают в C#. Часть 1. Проблемы модели асинхронного программирования (APM)

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров18K
Всего голосов 10: ↑7 и ↓3+4
Комментарии12

Комментарии 12

Итак, зачем же лезть в это, если уже 10 лет у нас есть async-await?

Я что-то суть статьи утерял, зачем воду лить на неактуальные паттерны?

Исторический экскурс чтобы лучше понимать как в итоге появился TAP. Полная статья очень объемная и хорошая, т.ч. вполне стоит опубликовать тут её перевод целиком несколькими частями.

И это важно, чтобы что?

Я не знаю, может это моя деформация, но мне неинтересен исторический экскурс с не используемым нынче кодом. Просто задумайтесь - статья названа "Как на самом деле Async/Await работают в C#", но т.к. это часть 1 - в ней ничего нет по названию.

ПС: есть отличные книги типа Async in C# 5.0, в которых я что-то не помню истории (она там есть, но встроена в повествование). А async-await при этом описан вполне доступно и понятно.

ПСС: а если глянуть на https://www.microsoft.com/en-us/download/details.aspx?id=19957 то там ровно обратный подход - сначала расскажем про сам крутой TAP, а потом как его прикрутить к APM (если кому нужно).

ПССС: а есть же ещё EAP. И на него будет статья, такая же как эта?

ПСССС: а, таки да, в оригинале дальше EAP. Потом ещё будет разбор enumerable для объяснения стейт-машины, а ещё ValueTask, а ещё AsyncLocal и куча прочей магии. Т.е. всё то, на что нужна целая книга по факту - эти вещи непросты для новичков и не сильно интересны тем кто уже знает. Интересно, что ребята из дотнета зачем-то это всё написали в 2023 отдельной статьей.

эти вещи непросты для новичков и не сильно интересны тем кто уже знает.

Можно исходить из того, что технические описания в основном пишутся и читаются не для интереса, а для справки и для возможности сопоставить информацию из разных источников для лучшего ее понимания, особенно в случае достаточной сложности этой информации.

Удачи в переводе.

Я как читатель одобряю такое.

А вот как программист на c# я честно скажу - мне такие статьи почти никогда не помогали, не хватало хороших примеров использования. Поэтому в целом по теме async-await предпочитаю (и рекомендую) книги.

На самом деле, статья достаточно свежая и там много деталей, которых лично я в книгах не встречал. В любом случае, по-моему, это лучше чем в стопятисотый раз про несчастный Singleton писать.

Соглашусь. Эти детали здорово помогают понять тему, проясняя природу тех или иных решений.

Свежая-то свежая, но вот про то как и зачем свежие фреймворки используют методRuntimeHelpers.TryEnsureSufficientExecutionStack() так и не рассказали...

Оригинал реально большой, но читается легко. Экскурс в историю помогает понять сложность самой проблемы и природу костылей, которыми приходится обкладывать решения.

Меня слегка разочаровало. Имхо, лучше бы исторический экскурс под спойлер спрятать. Я тоже скроллил экран аж чуть горилла Гласс не протер щуПальцем 😉

Жду следующей серии Дикой Розы. Следуй продолжение вскорости...

Интересно! Спасибо! Я подозревал что он должен быть! Но поиск по "Async/Await" по Хабру его не выдает, соответственно я его не видел. По Async отдельно тоже искал, но тоже не нашел. И вообще, похоже, мало кто может найти тот первый перевод, то есть эта моя статья может служить ссылкой, хотя бы.

Хорошо! Я думаю ничего страшного, если мой перевод тоже пока повисит, мне тоже будет интересно сравнить свою вторую версию с той первой.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории