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

Версия 2.9 от Alexandr Fokin на 2023/01/11 15:17

Понятие контекста синхронизации.

Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации.
Его основная цель - реализация механизма определения того, в каком потоке будет продолжаться выполнение кода после выхода из асинхронного ожидания (await).

  
// (По умолчанию)
ConfigureAwait(true)

 

Сообщает, что необходимо задействовать механизм контекста синхронизации для кода, идущего после выхода из данной асинхронной операции.
ConfigureAwait(false)Сообщает, что код, идущего после выхода из данной асинхронной операции, может быть выполнен в любом потоке из пула потоков.

Например во многих графических фремворках менять состояние контролов можно только из UI Thread, если после асинхронной операции нам необходимо изменить контрол, то нужна гарантия того, что код будет выполнен в UI Thead, а не любом Thread из ThreadPool. Потоки и задачи 


DeadLock при async await.

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


Ссылки:

Теги:
Создал(а) Alexandr Fokin 2020/07/16 21:10