|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
felix_ff много пиндосских букв. моего мозга не хватает чтобы всё это постичь. так нужен конфигюр или не нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 18:21 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
petalvik Бариску Нацарство, Вот этот код ошибочен: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Почему даже после этого методы Load...() исполняются последовательно? В логах видно, что каждый следующий стартует только после окончания предыдущего. Разве они не должны стартовать одновременно и заканчиваться, как успеют? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 18:34 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Бариску Нацарство Почему даже после этого методы Load...() исполняются последовательно? ОМГ, а как же они еще должны выполняться по-твоему, если перед каждым стоит await? Я еще раз говорю - погугль, почитай доки и т.п. чтобы разобраться для чего вообще ConfigureAwait нужен. подсказка - можешь сразу просто гуглить что такое synchronization context ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 19:28 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Бариску Нацарство много пиндосских букв. моего мозга не хватает чтобы всё это постичь. так нужен конфигюр или не нужен? Не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 19:56 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
hVostt Не нужен. Вообще-то нужен когда х/з что и как будет твой код вызывать. Линтеры так-то на его отсутствие ворчат. Я обычно просто из-за этого пишу, хотя лично мне-то он как раз вообще пофиг, т.к. работаю только с ASP.NET Core. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 20:05 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Бариску Нацарство так нужен конфигюр или не нужен? Бариску Нацарство Я 5 лет работал в компании, где, в соответствии утверждениям Скита, .ConfigureAwait(false) висел на каждом await, и мои пулл реквесты не одобряли, пока я не добавлял их. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 21:03 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
fkthat ОМГ, а как же они еще должны выполняться по-твоему, если перед каждым стоит await? а зачем тогда нужны эти async и его await, если всё равно как выполнялось синхронно, так и выполняется? гораздо проще старые, проверенные Task.Run(). Они-то по крайней мере точно выполняются параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 21:35 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Бариску Нацарство а зачем тогда нужны эти async и его await, если всё равно как выполнялось синхронно, так и выполняется? гораздо проще старые, проверенные Task.Run(). Они-то по крайней мере точно выполняются параллельно. Будешь читать учебник, заодно посмотри, чем отличается асинхронность от многопоточности. За книжки бегом! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 21:54 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
fkthat hVostt Не нужен. Вообще-то нужен когда х/з что и как будет твой код вызывать. Линтеры так-то на его отсутствие ворчат. Я обычно просто из-за этого пишу, хотя лично мне-то он как раз вообще пофиг, т.к. работаю только с ASP.NET Core. Ток для библиотек. Можно даже Fody настроить, чтобы автоматом добавлял. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 22:35 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Бариску Нацарство а зачем тогда нужны эти async и его await, если всё равно как выполнялось синхронно, так и выполняется? гораздо проще старые, проверенные Task.Run(). Они-то по крайней мере точно выполняются параллельно. Ну вот и используйте Task.Run(). Главное чтобы вас лично всё устраивало. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 22:36 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
hVostt Ток для библиотек. Ну да, я это и имел в виду под "х/з кто будет вызывать". hVostt Можно даже Fody настроить, чтобы автоматом добавлял. Так даже студия это умеет по "Ctrl+точка". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 22:38 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
hVostt Ну вот и используйте Task.Run(). Судя по тому что пишет автор, представляю что это будет :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 22:40 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
fkthat Так даже студия это умеет по "Ctrl+точка". Fody немного иначе работает, он модифицирует dll, добавляя туда вызовы для каждого await. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 22:41 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
fkthat hVostt Ну вот и используйте Task.Run(). Судя по тому что пишет автор, представляю что это будет :)) Будет очередной легаси :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2021, 22:51 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
fkthat Бариску Нацарство Почему даже после этого методы Load...() исполняются последовательно? ОМГ, а как же они еще должны выполняться по-твоему, если перед каждым стоит await? Я еще раз говорю - погугль, почитай доки и т.п. чтобы разобраться для чего вообще ConfigureAwait нужен. Не. Тут сначала нужно читать про то, как вообще await устроен и действует. Налицо факт полного непонимания основных концепций этой фичи. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2021, 03:46 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Бариску Нацарство Код: c# 1. 2. 3. 4. 5. 6.
Почему даже после этого методы Load...() исполняются последовательно? Потому что перед каждым стоит await. Так они будут выполняться одновременно: Код: c# 1. 2. 3. 4. 5. 6. 7.
Но это если они не обращаются к одним и тем же объектам. Конкуррентный доступ, все дела... Бариску Нацарство а зачем тогда нужны эти async и его await, если всё равно как выполнялось синхронно, так и выполняется? гораздо проще старые, проверенные Task.Run(). Они-то по крайней мере точно выполняются параллельно. Вызов await LoadSomeEntities1(); не подвешивает текущий поток. Например, GUI продолжает отрисовываться и реагировать на действия пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2021, 08:44 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Попробую объяснить простыми словами, зачем всё-таки нужен ConfigureAwait. Когда мы пишем вот так: Код: c# 1. 2. 3.
То перед вызовом этого метода захватывается контекст. А после его окончания выполнение возвращается в этот же контекст. Грубо говоря, в тот же поток. Но этот поток может быть занят какой-то другой задачей. Например, поток GUI может делать отрисовку в событии Paint. Поэтому может быть существенная задержка - ожидание освобождения потока. А если мы напишем так: Код: c# 1.
То после окончания выполнения метода продолжение может быть сделано в любом свободном на этот момент потоке. Поэтому использование ConfigureAwait(false) в целом ускоряет выполнение, устраняя лишние ожидания. Поэтому в библиотечном коде рекомендуется практически всегда использовать именно false. Однако в коде приложения не всегда можно продолжить выполнение в другом потоке. В частности, если нужно обратиться к контролам формы (TreeView). Обращаться к ним можно только из того потока, в котором они были созданы. Поэтому без ConfigureAwait(false) придётся использовать Invoke. А с ним этого не нужно - мы гарантированно вернулись в нужный поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2021, 08:55 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
дело не в потоках, а контексте выполнения/синхронизации, забудь слово потоки ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2021, 10:48 |
|
От чего может виснуть этот код?
|
|||
---|---|---|---|
#18+
Roman Mejtes дело не в потоках, а контексте выполнения/синхронизации, забудь слово потоки Наоборот. Всё дело в потоках. Консольные приложения никогда не имели контекста синхронизации. В ASP.NET Core SynchronizationContext тоже выпилили. Так куда возвращается выполнение после завершения асинхронного кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 15:58 |
|
|
start [/forum/topic.php?fid=20&msg=40061244&tid=1398292]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 412ms |
0 / 0 |