Асинхронность. Async Await - SynchronizationContext | Контекст синхронизации

Page / - Изменено Alexandr Fokin в 2020/07/16 21:10

SynchronizationContext | Контекст синхронизации

Изменено Alexandr Fokin

в 2020/07/16 21:10

Оглавление

Понятие контекста синхронизации.
Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации. Его основная цель - реализация механизма определения того, в каком потоке будет продолжаться выполнение кода после выхода из асинхронного ожидания (await).
// (По умолчанию) ConfigureAwait(true) Сообщает, что необходимо задействовать механизм контекста синхронизации для кода, идущего после выхода из данной асинхронной операции. ConfigureAwait(false) Сообщает, что код, идущего после выхода из данной асинхронной операции, может быть выполнен в любом потоке из пула потоков.
Например: Во многих графических фреймворках менять состояние контролов можно только из UI Thread, если после асинхронной операции нам необходимо изменить контрол, то нужна гарантия того, что код будет выполнен в UI Thead, а не любом Thread из ThreadPool. Потоки и задачи
При наличия контекста синхронизации, синхронное ожидание асинхронного результата может привести к Deadlock (см. проблемы).
Ссылки	ConfigureAwait FAQ devblogs.microsoft| ConfigureAwait FAQ ConfigureAwait, кто виноват и что делать? https://habr.com/ru/company/clrium/blog/463587/ ConfigureAwait: часто задаваемые вопросы https://habr.com/ru/post/482354/ SynchronizationContext — когда MSDN подводит https://habr.com/ru/post/232169/ IT - записки программиста: Контексты исполнения (ExecutionContext) и синхронизации (SynchronizationContext) - что это такое и с чем их едят ? http://alz-it.blogspot.com/2016/06/executioncontext-synchronizationcontext.html Пишем свой SynchronizationContext https://itnan.ru/post.php?c=1&p=269985

Внутренние ссылки:

Дочерние страницы:

Обратные ссылки:

Асинхронность. Async Await

Некоторые моменты

Имитация асинхронного (Async) Deadlock

Проблемы

Сценарии