async — biggest mistake in C #? / Оператор async — самая большая ошибка в C #?

16 октября, 14:50

Key ideas

We use async and await a lot nowadays and every library must support it. But is it a good idea? Is the whole pattern implemented well? What are the problems and why using async may not be a good idea? In this talk I show why async is far from being perfect. I cover problems with global state, exception handling, deadlocks and garbage collection. I explain why crucial programming principles were ignored when designing the mechanism and how broken it is.

Level 200, basic understanding of async/await is required.


Тезисы

Мы широко используем функции Async/Await и возлагаем на них большие надежды, поэтому оператор async должен поддерживаться всеми библиотеками. Но правильное ли это решение? Успешно ли реализуется шаблон в целом? Какие могут возникнуть проблемы, и почему использование оператора async может оказаться не самой лучшей идеей? В своём докладе я расскажу, почему асинхронная модель далека от совершенства. Я затрону проблемы, связанные с глобальными состояниями (global state), обработкой исключений, взаимными блокировками (дедлоками) и сборкой мусора. Я объясню, почему механизм разрабатывали, игнорируя важнейшие принципы программирования, и покажу, как много в нём проблемных мест.

Уровень сложности: средний. Требуется базовое знание sync/await.

Презентация (на Я.Диске)

 

Доступ к записям выступлений DotFest платный.

 

Купить доступ 5 900 ₽

 

Или залогиньтесь, если уже куплено.

Amazon

Adam Furmanek

I am Adam Furmanek and I am a professional software engineer for almost a decade. Right now I am at Amazon working with Big Data, Spark, and Machine Learning. I am always interested in digging deeper, exploring machine code and going through implementation details to better understand internals of the technologies I use every day. That’s why I like debugging, decompiling and disassembling the code to understand memory models, concurrency problems and other details hidden deeply inside. In my free time I play ping-pong, watch Woody Allen’s movies and blog stuff at http://blog.adamfurmanek.pl.


Адам работает инженером-программистом почти 10 лет. На данный момент он занимается большими данными, фреймворком Spark и машинным обучением в Amazon. Ему всегда было интересно копать глубже, изучать машинный код и разбираться в особенностях реализации ПО, чтобы лучше понимать устройство технологий, которые он использует каждый день. Поэтому Адаму нравится отлаживать, декомпилировать и дизассемблировать код — это позволяет разобраться в моделях управления памятью, проблемах параллельного выполнения кода и других нюансах, которые скрыты внутри кода. В свободное время Адам играет в пинг-понг, смотрит фильмы Вуди Аллена и публикует статьи на http://blog.adamfurmanek.pl.

I am Adam Furmanek and I am a professional software engineer for almost a decade. Right now I am at Amazon working with Big Data, Spark, and Machine Learning. I am always interested in digging deeper, exploring machine code and going through implementation details to better understand internals of the technologies I use every day. That’s why I like debugging, decompiling and disassembling the code to understand memory models, concurrency problems and other details hidden deeply inside. In my free time I play ping-pong, watch Woody Allen’s movies and blog stuff at http://blog.adamfurmanek.pl.


Адам работает инженером-программистом почти 10 лет. На данный момент он занимается большими данными, фреймворком Spark и машинным обучением в Amazon. Ему всегда было интересно копать глубже, изучать машинный код и разбираться в особенностях реализации ПО, чтобы лучше понимать устройство технологий, которые он использует каждый день. Поэтому Адаму нравится отлаживать, декомпилировать и дизассемблировать код — это позволяет разобраться в моделях управления памятью, проблемах параллельного выполнения кода и других нюансах, которые скрыты внутри кода. В свободное время Адам играет в пинг-понг, смотрит фильмы Вуди Аллена и публикует статьи на http://blog.adamfurmanek.pl.

Другие спикеры: