Изменения документа SynchronizationContext | Контекст синхронизации
Редактировал(а) Alexandr Fokin 2024/02/24 23:46
<
отредактировано Alexandr Fokin
на 2024/02/24 23:46
на 2024/02/24 23:46
отредактировано Alexandr Fokin
на 2023/01/11 15:18
на 2023/01/11 15:18
Изменить комментарий:
Renamed back-links.
Комментарий
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,15 +1,28 @@ 1 -| |Понятие контекста синхронизации. 2 -| |Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации. 1 +=== Понятие контекста синхронизации. === 2 + 3 +Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации. 3 3 Его основная цель - реализация механизма определения того, в каком потоке будет продолжаться выполнение кода после выхода из асинхронного ожидания (await). 4 -| |((( 5 + 6 + 7 +| | 5 5 |{{code language="c#"}}// (По умолчанию) 6 -ConfigureAwait(true){{/code}}|Сообщает, что необходимо задействовать механизм контекста синхронизации для кода, идущего после выхода из данной асинхронной операции. 9 +ConfigureAwait(true){{/code}}((( 10 + 11 +)))|Сообщает, что необходимо задействовать механизм контекста синхронизации для кода, идущего после выхода из данной асинхронной операции. 7 7 |{{code language="c#"}}ConfigureAwait(false){{/code}}|Сообщает, что код, идущего после выхода из данной асинхронной операции, может быть выполнен в любом потоке из пула потоков. 8 -))) 9 -| |Например: 10 -Во многих графических фреймворках менять состояние контролов можно только из UI Thread, если после асинхронной операции нам необходимо изменить контрол, то нужна гарантия того, что код будет выполнен в UI Thead, а не любом Thread из ThreadPool. [[Потоки и задачи>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Потоки и задачи.WebHome]] 11 -| |При наличия контекста синхронизации, синхронное ожидание асинхронного результата может привести к Deadlock (см. проблемы). 12 -|Ссылки|((( 13 + 14 +Например во многих графических фремворках менять состояние контролов можно только из UI Thread, если после асинхронной операции нам необходимо изменить контрол, то нужна гарантия того, что код будет выполнен в UI Thead, а не любом Thread из ThreadPool. [[Потоки и задачи>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Потоки и задачи.WebHome]] 15 + 16 +---- 17 + 18 +=== DeadLock при async await. === 19 + 20 +В некоторых случаях при неправильном использовании возможны ситуации, которая приводит к взаимной блокировке потока и зависанию приложения. 21 + 22 +---- 23 + 24 +=== Ссылки: === 25 + 13 13 * ConfigureAwait FAQ 14 14 [[devblogs.microsoft| ConfigureAwait FAQ>>url:https://devblogs.microsoft.com/dotnet/configureawait-faq/?utm_source=csharp&utm_medium=email&utm_campaign=digest]] 15 15 * ConfigureAwait, кто виноват и что делать? ... ... @@ -22,31 +22,3 @@ 22 22 http://alz-it.blogspot.com/2016/06/executioncontext-synchronizationcontext.html 23 23 * Пишем свой SynchronizationContext 24 24 https://itnan.ru/post.php?c=1&p=269985 25 -))) 26 -| | 27 - 28 ----- 29 - 30 -==== Внутренние ссылки: ==== 31 - 32 -====== Дочерние страницы: ====== 33 - 34 -{{children/}} 35 - 36 -====== Обратные ссылки: ====== 37 - 38 -{{velocity}} 39 -#set ($links = $doc.getBacklinks()) 40 -#if ($links.size() > 0) 41 - #foreach ($docname in $links) 42 - #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument()) 43 - * [[$escapetool.xml($rdoc.fullName)]] 44 - #end 45 -#else 46 - No back links for this page! 47 -#end 48 -{{/velocity}} 49 - 50 ----- 51 - 52 -