Редактировал(а) Alexandr Fokin 2024/02/24 23:46

<
От версии < 4.3
отредактировано Alexandr Fokin
на 2024/02/24 23:46
К версии < 4.1 >
отредактировано Alexandr Fokin
на 2023/01/11 15:18
Изменить комментарий: Renamed back-links.

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -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 -