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

Page / - Изменено Alexandr Fokin в 2021/12/25 17:52 

SynchronizationContext | Контекст синхронизации 
Изменено Alexandr Fokin
в 2021/12/25 17:52

Оглавление

 	Понятие контекста синхронизации.	
 	Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации.
Его основная цель - реализация механизма определения того, в каком потоке будет продолжаться выполнение кода после выхода из асинхронного ожидания (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
•	Некоторые моменты