|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Petro123Чет ты перегнул. Как вставить по стеку в глубине, если async не поддерживает стек? ну заведомо синхронные методы -- синхронные, без фанатизма, их намного больше. но все сервисы, службы, шины, менеджеры, и прочее -- асинхронные. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 18:39 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVostt, Ну, понятно. async First это просто "делайте чаще чтобы гуи не морозило)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 18:46 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVostt Ну в целом, знать как это устроено внутри полезно, но для использования нужно абстрагироваться. Нужно было бы. Если бы C# изначально проектировался с async/await, возможно получился бы простой и лёгкий синтаксис, как в Go. А что в GO такого легкого и простого? Ужасные горутины и каналы? Просто мерзкая обработка ошибок? И никакого ГУЯ! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 19:06 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
ЕвгенийВА что в GO такого легкого и простого? Ужасные горутины и каналы? Просто мерзкая обработка ошибок? И никакого ГУЯ! почему ужасные? сравнивать напрямую нельзя конечно, так как другая парадигма. кстати, в .NET тоже будут каналы, скоро. пока в глубокой бете. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 19:12 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttбудут каналы, скоро.вот я не понимаю почему сабж со стеком не работает? Код: c# 1. 2. 3. 4. 5. 6.
Вот как вставить асинхронный метод в метод2? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 19:23 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Petro123вот я не понимаю почему сабж со стеком не работает? что ты имеешь в виду? Petro123Вот как вставить асинхронный метод в метод2? сделать Metod2 асинхронным _) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 19:34 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVostt почему ужасные? сравнивать напрямую нельзя конечно, так как другая парадигма. Ужасные - это касалось горутин. Обычный запуск задачи в отдельном потоке. hVosttкстати, в .NET тоже будут каналы, скоро. пока в глубокой бете. Про каналы ничего не имею против, особенно когда они допускают межпроцессорное и межкомпьютерное взаимодействие. В .NET они уже были 9 лет назад. Axum Введение в язык программирования Axum ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 19:35 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttсделать Metod2 асинхронным _)как сделать без замены возврата bool? Этод метод вызывается в куче мест. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 19:54 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttчто ты имеешь в виду?CreateMap() будет вызвана до окончания потока внутри метода2. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 19:57 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
>Petro123, сегодня, 18:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1300144&msg=21634863][21634878] >...Нет, IDE не встанет заботливо на точку по месту ошибки. Те, кто привыкли так работать страдают и воют… <Что-то не понимаю: ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 20:04 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
ЕвгенийВУжасные - это касалось горутин. Обычный запуск задачи в отдельном потоке. Почему в отдельном потоке? Это уж как повезёт :) ЕвгенийВПро каналы ничего не имею против, особенно когда они допускают межпроцессорное и межкомпьютерное взаимодействие. В .NET они уже были 9 лет назад. https://www.nuget.org/packages/System.Threading.Channels :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 20:29 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Petro123как сделать без замены возврата bool? Этод метод вызывается в куче мест. никак, либо две версии метода ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 20:30 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
ВМоисеев<Что-то не понимаю: Код на скрне полностью синхронный. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 20:31 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 20:31 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1300144&msg=21634947][21634947] >Код на скрне полностью синхронный. <А так: ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 21:03 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
ВМоисеев, И чего? Вы точку останова поставили. Речь идёт о сваливании с исключением и остановкой дебагера на этом месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 21:12 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttПо поводу вопроса, ещё раз. Если ты вызовешь Wait или Result на таске вместо await, а внутри будет await без ConfigureAwait(false) будет гарантированный дедлок.По поводу вложенности еще раз. Если await без ConfigureAwait(false) на первом уровне - то дедлок понятен, а если, к примеру, первый-второй уровень вложенности идет с ConfigureAwait(false), а на третьем забыли. Будет ли дедлок и если да, то почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 05:01 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Shocker.ProПо поводу вложенности еще раз. Если await без ConfigureAwait(false) на первом уровне - то дедлок понятен, а если, к примеру, первый-второй уровень вложенности идет с ConfigureAwait(false), а на третьем забыли. Будет ли дедлок и если да, то почему? Вот тут всё ок. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
А здесь будет ошибка Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 10:23 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Необходимо понимать, что ConfigureAwait на сам вызов метода не влияет, только на продолжение. Для кода, выполняемого после ConfigureAwait контекст потерян, и там уже не имеет значения, есть ConfigureAwait или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 10:25 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttНеобходимо понимать, что ConfigureAwait на сам вызов метода не влияет, только на продолжение.это я понимаю. Я не понимаю какой-то другой нюанс в твоем изначальном примере и пытаюсь его нащупать... Я, похоже, вот какой момент не до конца осознавал... при вызове асинхронного метода (в том числе каскадно) его (их) операторы будут выполняться в вызвавшем потоке до первого встреченного await-а. Я воспринимал, что операторы сразу начнут выполняться в другом потоке. И, кажется, я это знал, но забыл )) Отсюда все мои предыдущие вопросы можно аннулировать Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 11:16 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttСейчас проекты пишутся async-first. Всё хорошо.При этом используется суффикс Async в названии каждого метода? Или забили, потому что они вообще все асинхронные? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 11:17 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Вот пример, где ConfigureAwait(false) не спасает от дедлока, это только у меня так? (WinForms, VS2017, FW 4.5.2-4.6.2) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ConfigureAwait(false) лишь отменяет требование выполнять продолжение в первоначальном контексте, т.е., дает "добро" на любой контекст, в т.ч. не исключая первоначальный. В данном примере, вероятно, async-инфраструктуре "влом" идти и брать свободный поток из пула, и выбирается то, что "под боком" - а это (уже блокированный ожиданием .Result) UI-поток. Или все происходит как-то по другому? Может кто-нибудь проверить этот пример у себя? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 11:35 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttСейчас проекты пишутся async-first. Всё хорошо.При этом используется суффикс Async в названии каждого метода? Или забили, потому что они вообще все асинхронные?забить студия не даст. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 11:57 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Petro123забить студия не даст.С чего вдруг не даст? Даже решарпер - и тот не настаивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 12:05 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Shocker.ProЯ, похоже, вот какой момент не до конца осознавал... при вызове асинхронного метода (в том числе каскадно) его (их) операторы будут выполняться в вызвавшем потоке до первого встреченного await-а. Я воспринимал, что операторы сразу начнут выполняться в другом потоке. И, кажется, я это знал, но забыл )) Отсюда все мои предыдущие вопросы можно аннулировать Да, до первого await, который вернёт незавершённую задачу (важное уточнение), всё будет синхронно. Shocker.ProПри этом используется суффикс Async в названии каждого метода? Или забили, потому что они вообще все асинхронные? Нет, не забили. Все асинхронные методы имеют суффикс Async. Контролируется на этапе сборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2018, 13:09 |
|
|
start [/forum/topic.php?fid=20&msg=39685047&tid=1399271]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 243ms |
0 / 0 |