Дмитрий Иванов - Async programming in .NET: Best practices
Vložit
- čas přidán 15. 08. 2019
- Ближайшая конференция - DotNext 2024, 10 - 11 сентября, Москва + online
Подробности и билеты: jrg.su/x2GKnA
- -
Всё ли известно про async/await? Мы уверены, что нет - Дмитрий расскажет все тонкости работы с ними.
Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельный код. Зачастую, используя асинхронное программирование, программисты не только не решают проблемы, которые были с потоками, но и привносят новые. Дедлоки и рейсы никуда не пропадают - их просто становится труднее диагностировать.
На основании опыта и наблюдений Дмитрий расскажет про правильные и неправильные паттерны написания асинхронного кода. - Věda a technologie
Очень сумбурный рассказ. В следующий раз от общего к частному и без скомканности, пожалуйста.
Давно следует понять: хороший_рограммист != хороший_докладчик и прекратить плодить подобные безобразия...
Спасибо. Я даже что-то понял и использую в своей практике. Про каналы прошло мимо, пока не понимаю.
"Скедлер" блин. Я долго не мог понять, какой еще "скедлер". А потом как дошло, что это "шедулэ". И как поняяял. Вот так вот бывает, Лешк)
@@user-gh8iu7kl2v ахах😁 здарова бро
AsyncLazy решение не рабочее. При первой же материализации beforeList.Select(b => lazy[b].Value) будет KeyNotFound exception. Нигде в коде, элементы из коллекции beforeList не добавляются в lazy dictionary. Возможно там необходимо делать рекурсивный вызов? Я думаю что стоит проверять примеры перед тем как представлять их публике. Комментарий о том что на все было потрачено всего 10 минут и это работает в итоге выглядит несколько непрофессионально.
полагаю, как заполнить поле ExecuteBefore не так важно в данном примере. Можно, например, в конструкторе этого AsyncLazy класса, один раз проверив инварианты, чтобы в цикле уже не делать проверки.
Мозг сгорел - либо я тупой (что супер вероятно) либо перебор каких то заимствованных слов произнесеных на русский лад - я тупо терял логику каждую секунду.
Вернулся через 2 месяца с новыми знаниями уже пол лучше , хотя подача один хрен сумбурная
уши сворачиваются от акшонов, токЕнов =(
19:30 все коварство в скобках, никакой магии и сложной логики
токЕн!? кэнсилить ? Что за .... Уши заворачиваются. Откуда он вылез?
Чел видно грамотный, но подача материала ужасная.
континюации, скедулер, канселяция.. омг. Русский язык? Нет, не слышал... В остальном доклад отличный!
Чувак you просто не understand. Все вполне logical))))
Cкедулер, скедлер, шедулер, шедлер. За доклад спасибо, очень интересно было послушать)
Акшон
токЕн
@@DerSkythe тАкен
@@tony_tokarchuk4761 Tekken
Не понятна проблема с ConfigureAwait. Его использование обязательно когда вы не знаете (не можете контролировать) в каком потоке задача будет запускаться. А это справедливо только для библиотек. В своем же коде (пример автора), нужно понимать что ConfigureAwait делает, иначе вы рескуете запускать все свои подзадачи в UI потоке, что не желательно конечно.
Если вы не знаете в каком потоке будет запускаться задача, то лучше оставить ConfigureAwait(false) на месте, это актуально для библиотек и приложений с UI потоком (WPF, WF и т.п.) В ASP Core например, вызов этого метода избыточен и ничего не даст.
@@GreyAbs для приложений с UI потоком скорее нужно писать ConfigureAwait(true) дабы вернуться в тот же контекст, что был до вызова асинхронного метода, иначе можно получить эксепшен. если далее по коду пытаться работать с какими либо контролами формы в WF.
@@GreyAbs Он дает то что, при завершении таски, вы говорите планировщику: дружище не нужно тратить время на переключение контекста, продолжай на текущем. Оказываеться, что на такое переключение тратится время и рекомендуют этого не делать если нет необходимости.
скедулер, акшон, кто это, кто все эти люди О_о