powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зачем нужен await?
25 сообщений из 252, страница 4 из 11
Зачем нужен await?
    #39682335
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 полностью лежит на функции которая его вернула

что непонятно? с чем не согласны?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682336
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полистал Рихтера "CLR via C# 4-е издание" Глава 28. Асинхронные операции ввода-вывода.
Подробно разжевано как устроены async/await (целиком читал 3-е издание, надо уже собраться и это прочитать)

Под капотом асинхронного IO .net использует надстройку над виндовым I/O Completion Port . По ссылке подробно расписано как он устроен.
Если кратко: виндовсу дается задание на чтение или запись и освобождается текущий поток, как только задание выполняется, виндовс будит один из потоков-обработчиков из заранее созданного пула.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682340
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДостали вы меня, в C++ есть async/await? Нету.
Вообще то есть. Сделано через концепцию future/promise
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682346
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Но это не важно.

Вы видели мой вопрос в начале топика? Я говорил где-то, а давайте обсудим сам паттерн, нужен ли он вообще, как он устроен, чё там видно в дебагере и т.п.? Может хватит офтопить? Или давайте заведём отдельную тему, где обсудим эти вопросы?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682347
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПолистал Рихтера "CLR via C# 4-е издание" Глава 28. Асинхронные операции ввода-вывода.
Подробно разжевано как устроены async/await (целиком читал 3-е издание, надо уже собраться и это прочитать)

Под капотом асинхронного IO .net использует надстройку над виндовым I/O Completion Port . По ссылке подробно расписано как он устроен.
Если кратко: виндовсу дается задание на чтение или запись и освобождается текущий поток, как только задание выполняется, виндовс будит один из потоков-обработчиков из заранее созданного пула.

Ну слава те хоспади! :)

Только эта же реализация использовалась и ранее, на устаревшем асинхронном API (APM, EAP), просто из-за её неудобств, абсолютное большинство вообще не знали что это такое и как этим пользоваться. Просто запускали фоновые потоки для асинхронного поведения.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682348
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglhVosttДостали вы меня, в C++ есть async/await? Нету.
Вообще то есть. Сделано через концепцию future/promise

Это другой паттерн.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682355
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Но это не важно.

Вы видели мой вопрос в начале топика? Я говорил где-то, а давайте обсудим сам паттерн, нужен ли он вообще, как он устроен, чё там видно в дебагере и т.п.? Может хватит офтопить? Или давайте заведём отдельную тему, где обсудим эти вопросы?
я их с натива дёргаю, а ты говоришь что это всё мистика, ты адекватный?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682364
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttSiemarglпропущено...
Вообще то есть. Сделано через концепцию future/promise
Это другой паттерн.Я смотрю MSIL и вижу ту же самую реализацию.


Давай еще раз. Ты сначала пишешь.
hVosttДумаю многие сталкивались с ключевым словом await в языках, применяющих async/await паттерн для асинхронного программирования. Основное ограничение, это использование только в async-функциях, это понятно.

Вопрос такой. Почему бы вообще не отказаться от этого ключевого слова и необходимости его употребления, ведь компилятор может определить наличие вызова асинхронного метода и сам выполнить его асинхронно?
.. И потом
hVostt2. забыли await, получили проблемы, особенно, если мы не ожидаем результат, а только сам факт асинхронного исполнения (async void).

Так нужен тебе await или не нужен ?

Приведи что ли кусок кода, где ты считаешь его ненужным.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682376
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt2. нет инструментов, которые контролируют забытый await. приходится писать дополнительный код проверки там, где это критично. Есть
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682383
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
// Three things to note in the signature: 
//  - The method has an async modifier.  
//  - The return type is Task or Task<T>. (See "Return Types" section.)
//    Here, it is Task<int> because the return statement returns an integer. 
//  - The method name ends in "Async."
async Task<int> AccessTheWebAsync()
{ 
    // You need to add a reference to System.Net.Http to declare client.
    HttpClient client = new HttpClient();

    // GetStringAsync returns a Task<string>. That means that when you await the 
    // task you'll get a string (urlContents).
    Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");

    // You can do work here that doesn't rely on the string from GetStringAsync.
    DoIndependentWork();

    // The await operator suspends AccessTheWebAsync. 
    //  - AccessTheWebAsync can't continue until getStringTask is complete. 
    //  - Meanwhile, control returns to the caller of AccessTheWebAsync. 
    //  - Control resumes here when getStringTask is complete.  
    //  - The await operator then retrieves the string result from getStringTask. 
    string urlContents = await getStringTask;

    // The return statement specifies an integer result. 
    // Any methods that are awaiting AccessTheWebAsync retrieve the length value. 
    return urlContents.Length;
}
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682385
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно :(
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682388
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПонятно, что наличие ключевого слова await позволяет, допустим, собрать все вызовы в коллекцию и эвейтить её,

Ну так а какие аргументы еще нужны?

Код либо ждем (await)
Либо не ждём (без await) - по каким то причинам. Например - потом подождём.

Ну и всё. )
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682392
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)упустим ваши современные английские манеры

Не нужно писать, что у меня нет ответа, когда я его давал и не однократно.
Если это по-вашему офигеть какие адекватные манеры, то для вас у меня плохие новости.

kealon(Ruslan)я их с натива дёргаю, а ты говоришь что это всё мистика, ты адекватный?

В нативе нет никаких async/await, в чём ваша проблема, не пойму?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682393
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЯ смотрю MSIL и вижу ту же самую реализацию.

Приведите код и давайте посмотрим на MSIL. Не знаю чего вы там видите.


SiemarglТак нужен тебе await или не нужен ?

Мне нужен await, но считаю, что использование ключевого слова в большинстве случаев избыточно.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682394
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVostt2. нет инструментов, которые контролируют забытый await. приходится писать дополнительный код проверки там, где это критично. Есть

Ок, сейчас проверим.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682395
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

наверное всегда избыточно
await можно поставить автоматом всегда (ну, вроде как)
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682396
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомНу так а какие аргументы еще нужны?

Код либо ждем (await)
Либо не ждём (без await) - по каким то причинам. Например - потом подождём.

Ну и всё. )

В смысле, потом? )
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682397
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

наверное всегда избыточно
await можно поставить автоматом всегда (ну, вроде как)

Я тоже так думаю, благодаря ключевому слову async для блока метода, компилятор понимает, что тело может содержать асинхронные вызовы.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682400
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЯ тоже так думаю, благодаря ключевому слову async для блока метода, компилятор понимает, что тело может содержать асинхронные вызовы.
Может, но необязательно содержит, кроме того, метод может возвращать Task, но не содержать асинхронных вызовов и ключевого слова asynс
А еще может понадобиться запустить асинхронный метод и не ждать его окончания.
А еще есть async void - асинхронные методы, которые не получится ждать
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682402
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRoshVostt,

наверное всегда избыточно
await можно поставить автоматом всегда (ну, вроде как)

Я тоже так думаю, благодаря ключевому слову async для блока метода, компилятор понимает, что тело может содержать асинхронные вызовы.
Это необходимо, но недостаточно.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682404
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужен еще анализ - есть ли обращение к TaskResult где нить
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682407
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И воще еще раз возвращаюсь к тому что надо было явно выделить (не через соглашение, а как свойство таск) I/O Port таски и тогда не было бы путаницы этой и не надо было писать асунк-авайт вообще
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682408
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVostt2. нет инструментов, которые контролируют забытый await. приходится писать дополнительный код проверки там, где это критично. Есть

Проверил, верно, нужно добавить в CSPROJ

Код: xml
1.
<WarningsAsErrors>CS4014,CS1998</WarningsAsErrors>



Это снимает проблему №2 :)
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682409
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМожет, но необязательно содержит, кроме того, метод может возвращать Task, но не содержать асинхронных вызовов и ключевого слова asynс
А еще может понадобиться запустить асинхронный метод и не ждать его окончания.
А еще есть async void - асинхронные методы, которые не получится ждать

Поэтому нужен контракт, хотя бы атрибут для методов интерфейса.
Вообще, конечно, можно задействовать Fody и добиться желаемого, но это капец плохая идея :)

Насчёт async void, ща так делать моветон :)
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682410
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosНужен еще анализ - есть ли обращение к TaskResult где нить

Ну это без разницы же.

ViPRosИ воще еще раз возвращаюсь к тому что надо было явно выделить (не через соглашение, а как свойство таск) I/O Port таски и тогда не было бы путаницы этой и не надо было писать асунк-авайт вообще

Это нужно было, чтобы вставлять костыли в виде запусков тасков в отдельном потоке там, где нет поддержки асинхронной реализации.

Например, правайдер оракла до сих пор не умеет async. Поэтому вызовы нужно оборачивать в Task.Run, чтобы интерфейсы не ломать.
...
Рейтинг: 0 / 0
25 сообщений из 252, страница 4 из 11
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зачем нужен await?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]