Изменения документа SynchronizationContext | Контекст синхронизации
Редактировал(а) Alexandr Fokin 2024/02/24 23:46
<
отредактировано Alexandr Fokin
на 2023/01/11 15:17
на 2023/01/11 15:17
отредактировано Alexandr Fokin
на 2024/02/24 23:46
на 2024/02/24 23:46
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Родительский документ
-
... ... @@ -1,1 +1,1 @@ 1 -Разработка.NET.C#.Многопоточность и асинхронность 2.Асинхронность\. Async Await.WebHome1 +Разработка.NET.C#.Многопоточность и асинхронность.Асинхронность\. Async Await.WebHome - Содержимое
-
... ... @@ -1,28 +1,15 @@ 1 -=== Понятие контекста синхронизации. === 2 - 3 -Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации. 1 +| |Понятие контекста синхронизации. 2 +| |Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации. 4 4 Его основная цель - реализация механизма определения того, в каком потоке будет продолжаться выполнение кода после выхода из асинхронного ожидания (await). 5 - 6 - 7 -| | 4 +| |((( 8 8 |{{code language="c#"}}// (По умолчанию) 9 -ConfigureAwait(true){{/code}}((( 10 - 11 -)))|Сообщает, что необходимо задействовать механизм контекста синхронизации для кода, идущего после выхода из данной асинхронной операции. 6 +ConfigureAwait(true){{/code}}|Сообщает, что необходимо задействовать механизм контекста синхронизации для кода, идущего после выхода из данной асинхронной операции. 12 12 |{{code language="c#"}}ConfigureAwait(false){{/code}}|Сообщает, что код, идущего после выхода из данной асинхронной операции, может быть выполнен в любом потоке из пула потоков. 13 - 14 -Например во многих графических фремворках менять состояние контролов можно только из UI Thread, если после асинхронной операции нам необходимо изменить контрол, то нужна гарантия того, что код будет выполнен в UI Thead, а не любом Thread из ThreadPool. [[Потоки и задачи>>doc:Разработка.NET.C#.Многопоточность и асинхронность2.Потоки и задачи.WebHome]] 15 - 16 ----- 17 - 18 -=== DeadLock при async await. === 19 - 20 -В некоторых случаях при неправильном использовании возможны ситуации, которая приводит к взаимной блокировке потока и зависанию приложения. 21 - 22 ----- 23 - 24 -=== Ссылки: === 25 - 8 +))) 9 +| |Например: 10 +Во многих графических фреймворках менять состояние контролов можно только из UI Thread, если после асинхронной операции нам необходимо изменить контрол, то нужна гарантия того, что код будет выполнен в UI Thead, а не любом Thread из ThreadPool. [[Потоки и задачи>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Потоки и задачи.WebHome]] 11 +| |При наличия контекста синхронизации, синхронное ожидание асинхронного результата может привести к Deadlock (см. проблемы). 12 +|Ссылки|((( 26 26 * ConfigureAwait FAQ 27 27 [[devblogs.microsoft| ConfigureAwait FAQ>>url:https://devblogs.microsoft.com/dotnet/configureawait-faq/?utm_source=csharp&utm_medium=email&utm_campaign=digest]] 28 28 * ConfigureAwait, кто виноват и что делать? ... ... @@ -35,3 +35,31 @@ 35 35 http://alz-it.blogspot.com/2016/06/executioncontext-synchronizationcontext.html 36 36 * Пишем свой SynchronizationContext 37 37 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 +