|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttДостали вы меня, в C++ есть async/await? Нету. В С++ можно писать асинхронный код? Можно. И в C# можно было до появления async/await. Вы до сих пор не удосужились почитать ни одного материала по async/await, всё продолжаете смачно фантазировать и отнимать у людей время своими бессмысленными набросами. Можете ясно и чётко выразить свою мысль? Вы чего хотите донести? Я исходные данные в начале топика озвучил, при чём тут ваша отладка, при чём тут C++? Вы хотите сказать, что async/await это бессмысленная конструкция? Помятуя ответ в этом топике от MasterZiv, на который вы неоднократно ссылались, это выглядит так. Ну тогда для чего этот паттерн ввели в нескольких языках? Может они просто тупые и вас забыли спросить? Ну не смешите людей уже своими глупостями. Либо выражайтесь яснее, либо не отнимайте время у людей. утверждение MasterZiv построено от противного, он чётко выводит "так нафига они тогда нужны?", а ответа у вас нету если копаться в кишка всей этой конструкции: в .Net и WinRT метод помеченный async это контракт на поставку интерфейса IAsync<t> для метода помеченного как async компилятор делает "загрузочный" стаб , на экспорт идёт загрузочный стаб await это лишь синтаксический сахар, который вызывает IAsync<t>.Wait (попутные действия пока пропустим) реализация IAsync<t>.Wait полностью лежит на функции которая его вернула что непонятно? с чем не согласны? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:22 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Полистал Рихтера "CLR via C# 4-е издание" Глава 28. Асинхронные операции ввода-вывода. Подробно разжевано как устроены async/await (целиком читал 3-е издание, надо уже собраться и это прочитать) Под капотом асинхронного IO .net использует надстройку над виндовым I/O Completion Port . По ссылке подробно расписано как он устроен. Если кратко: виндовсу дается задание на чтение или запись и освобождается текущий поток, как только задание выполняется, виндовс будит один из потоков-обработчиков из заранее созданного пула. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:28 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttДостали вы меня, в C++ есть async/await? Нету. Вообще то есть. Сделано через концепцию future/promise ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:31 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
kealon(Ruslan)утверждение MasterZiv построено от противного, он чётко выводит "так нафига они тогда нужны?", а ответа у вас нету Вот с фига ли вы взяли, что ответа у меня нет? Это что, вы так дурака включаете, или просто не читаете, или у у вас проблемы с памятью? Как объяснить вашу ахинею? Я написал следующим же ответом 21619690 и ссылку приложил и потом ещё неоднократно давал объяснения, вы почему так вообще говорите? Что за манеры у вас дебильные? kealon(Ruslan)если копаться в кишка всей этой конструкции: в .Net и WinRT метод помеченный async это контракт на поставку интерфейса IAsync<t> для метода помеченного как async компилятор делает "загрузочный" стаб , на экспорт идёт загрузочный стаб await это лишь синтаксический сахар, который вызывает IAsync<t>.Wait (попутные действия пока пропустим) реализация IAsync<t>.Wait полностью лежит на функции которая его вернула что непонятно? с чем не согласны? Ну во-первых. В .net async - это не контракт, и в других языках, где применяется async/await тоже. Во-вторых. Для работы await метод должен возвращать объект с методом GetAwaiter, у которого нет метода Wait, или чего-то похожего. Вы до сих пор не понимаете как работает async/await. Но это не важно. Вы видели мой вопрос в начале топика? Я говорил где-то, а давайте обсудим сам паттерн, нужен ли он вообще, как он устроен, чё там видно в дебагере и т.п.? Может хватит офтопить? Или давайте заведём отдельную тему, где обсудим эти вопросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:38 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Dima TПолистал Рихтера "CLR via C# 4-е издание" Глава 28. Асинхронные операции ввода-вывода. Подробно разжевано как устроены async/await (целиком читал 3-е издание, надо уже собраться и это прочитать) Под капотом асинхронного IO .net использует надстройку над виндовым I/O Completion Port . По ссылке подробно расписано как он устроен. Если кратко: виндовсу дается задание на чтение или запись и освобождается текущий поток, как только задание выполняется, виндовс будит один из потоков-обработчиков из заранее созданного пула. Ну слава те хоспади! :) Только эта же реализация использовалась и ранее, на устаревшем асинхронном API (APM, EAP), просто из-за её неудобств, абсолютное большинство вообще не знали что это такое и как этим пользоваться. Просто запускали фоновые потоки для асинхронного поведения. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:41 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
SiemarglhVosttДостали вы меня, в C++ есть async/await? Нету. Вообще то есть. Сделано через концепцию future/promise Это другой паттерн. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:42 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttkealon(Ruslan)утверждение MasterZiv построено от противного, он чётко выводит "так нафига они тогда нужны?", а ответа у вас нету Вот с фига ли вы взяли, что ответа у меня нет? Это что, вы так дурака включаете, или просто не читаете, или у у вас проблемы с памятью? Как объяснить вашу ахинею? Я написал следующим же ответом 21619690 и ссылку приложил и потом ещё неоднократно давал объяснения, вы почему так вообще говорите? Что за манеры у вас дебильные? упустим ваши современные английские манеры hVosttkealon(Ruslan)если копаться в кишка всей этой конструкции: в .Net и WinRT метод помеченный async это контракт на поставку интерфейса IAsync<t> для метода помеченного как async компилятор делает "загрузочный" стаб , на экспорт идёт загрузочный стаб await это лишь синтаксический сахар, который вызывает IAsync<t>.Wait (попутные действия пока пропустим) реализация IAsync<t>.Wait полностью лежит на функции которая его вернула что непонятно? с чем не согласны? Ну во-первых. В .net async - это не контракт, и в других языках, где применяется async/await тоже. Во-вторых. Для работы await метод должен возвращать объект с методом GetAwaiter, у которого нет метода Wait, или чего-то похожего. Вы до сих пор не понимаете как работает async/await. Но это не важно. Вы видели мой вопрос в начале топика? Я говорил где-то, а давайте обсудим сам паттерн, нужен ли он вообще, как он устроен, чё там видно в дебагере и т.п.? Может хватит офтопить? Или давайте заведём отдельную тему, где обсудим эти вопросы? я их с натива дёргаю, а ты говоришь что это всё мистика, ты адекватный? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 08:55 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttSiemarglпропущено... Вообще то есть. Сделано через концепцию future/promise Это другой паттерн.Я смотрю MSIL и вижу ту же самую реализацию. Давай еще раз. Ты сначала пишешь. hVosttДумаю многие сталкивались с ключевым словом await в языках, применяющих async/await паттерн для асинхронного программирования. Основное ограничение, это использование только в async-функциях, это понятно. Вопрос такой. Почему бы вообще не отказаться от этого ключевого слова и необходимости его употребления, ведь компилятор может определить наличие вызова асинхронного метода и сам выполнить его асинхронно? .. И потом hVostt2. забыли await, получили проблемы, особенно, если мы не ожидаем результат, а только сам факт асинхронного исполнения (async void). Так нужен тебе await или не нужен ? Приведи что ли кусок кода, где ты считаешь его ненужным. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 09:07 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVostt2. нет инструментов, которые контролируют забытый await. приходится писать дополнительный код проверки там, где это критично. Есть ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 09:42 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVostt, Как тут компилятору узнать куда надо await сунуть? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 09:55 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttПонятно, что наличие ключевого слова await позволяет, допустим, собрать все вызовы в коллекцию и эвейтить её, Ну так а какие аргументы еще нужны? Код либо ждем (await) Либо не ждём (без await) - по каким то причинам. Например - потом подождём. Ну и всё. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:06 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
kealon(Ruslan)упустим ваши современные английские манеры Не нужно писать, что у меня нет ответа, когда я его давал и не однократно. Если это по-вашему офигеть какие адекватные манеры, то для вас у меня плохие новости. kealon(Ruslan)я их с натива дёргаю, а ты говоришь что это всё мистика, ты адекватный? В нативе нет никаких async/await, в чём ваша проблема, не пойму? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:10 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
SiemarglЯ смотрю MSIL и вижу ту же самую реализацию. Приведите код и давайте посмотрим на MSIL. Не знаю чего вы там видите. SiemarglТак нужен тебе await или не нужен ? Мне нужен await, но считаю, что использование ключевого слова в большинстве случаев избыточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:11 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Алексей КhVostt2. нет инструментов, которые контролируют забытый await. приходится писать дополнительный код проверки там, где это критично. Есть Ок, сейчас проверим. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:12 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVostt, наверное всегда избыточно await можно поставить автоматом всегда (ну, вроде как) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:13 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Агнец за бортомНу так а какие аргументы еще нужны? Код либо ждем (await) Либо не ждём (без await) - по каким то причинам. Например - потом подождём. Ну и всё. ) В смысле, потом? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:13 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
ViPRoshVostt, наверное всегда избыточно await можно поставить автоматом всегда (ну, вроде как) Я тоже так думаю, благодаря ключевому слову async для блока метода, компилятор понимает, что тело может содержать асинхронные вызовы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:14 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttЯ тоже так думаю, благодаря ключевому слову async для блока метода, компилятор понимает, что тело может содержать асинхронные вызовы. Может, но необязательно содержит, кроме того, метод может возвращать Task, но не содержать асинхронных вызовов и ключевого слова asynс А еще может понадобиться запустить асинхронный метод и не ждать его окончания. А еще есть async void - асинхронные методы, которые не получится ждать ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:17 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
hVosttViPRoshVostt, наверное всегда избыточно await можно поставить автоматом всегда (ну, вроде как) Я тоже так думаю, благодаря ключевому слову async для блока метода, компилятор понимает, что тело может содержать асинхронные вызовы. Это необходимо, но недостаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:20 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Нужен еще анализ - есть ли обращение к TaskResult где нить ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:22 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
И воще еще раз возвращаюсь к тому что надо было явно выделить (не через соглашение, а как свойство таск) I/O Port таски и тогда не было бы путаницы этой и не надо было писать асунк-авайт вообще ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:26 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Алексей КhVostt2. нет инструментов, которые контролируют забытый await. приходится писать дополнительный код проверки там, где это критично. Есть Проверил, верно, нужно добавить в CSPROJ Код: xml 1.
Это снимает проблему №2 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:26 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
Shocker.ProМожет, но необязательно содержит, кроме того, метод может возвращать Task, но не содержать асинхронных вызовов и ключевого слова asynс А еще может понадобиться запустить асинхронный метод и не ждать его окончания. А еще есть async void - асинхронные методы, которые не получится ждать Поэтому нужен контракт, хотя бы атрибут для методов интерфейса. Вообще, конечно, можно задействовать Fody и добиться желаемого, но это капец плохая идея :) Насчёт async void, ща так делать моветон :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:30 |
|
Зачем нужен await?
|
|||
---|---|---|---|
#18+
ViPRosНужен еще анализ - есть ли обращение к TaskResult где нить Ну это без разницы же. ViPRosИ воще еще раз возвращаюсь к тому что надо было явно выделить (не через соглашение, а как свойство таск) I/O Port таски и тогда не было бы путаницы этой и не надо было писать асунк-авайт вообще Это нужно было, чтобы вставлять костыли в виде запусков тасков в отдельном потоке там, где нет поддержки асинхронной реализации. Например, правайдер оракла до сих пор не умеет async. Поэтому вызовы нужно оборачивать в Task.Run, чтобы интерфейсы не ломать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 10:32 |
|
|
start [/forum/topic.php?fid=20&msg=39682340&tid=1399271]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 563ms |
0 / 0 |