Re[49]: Можно ли избавиться от async|await?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 12.01.26 13:26
Оценка:
Здравствуйте, ·, Вы писали:


S>>>> и вызов через await Task.WhenAll

S>>·>Это значит, что метод содержащий await Task.WhenAll тоже обязан быть async. Зачем??!
S>> Затем, что это асинхронный метод. Для синхронных есть Task.WaitAll. Task можно создавать с опцией LongRunning
·>_Зачем_ он асинхронный?
Затем что задача выполняется в отдельном потоке.

S>>>> Еще раз. витруальные потоки хороши для асинхронизации синхронного кода. Всё!

S>>·>Неверно. Для параллельного исполнения, а не асинхронизации. Потоки в принципе для этого и придумывали.
S>>Изначально асинхронность была придумана для асинхронного ввода вывода когда реальные потоки не используются.
·>Ок, уже лучше. А _зачем_ нужен асинхронный ввод-вывод? Что плохого в коде, который делает просто что-то вроде print(file.read(...)) или sendResults(sqlQuery.execute(...))?

Да ничего. Просто при print задействован контроллер, а не CPU.
Операционная система — аппаратное обеспечение ввода-вывода

S>>>> Затем, что мы останавливаем и поток для дожидания результата. Ведь он может выполняться значительно дольше чем код кода до task.Result.

S>>>>task.Result это для поддержки старого синхронного кода. Вот где преимущество виртуальных потоков.
S>>·>Так что же плохого в старом синхронном коде при наличии виртуальных потоков? А хорошее, очевидно, есть. Синхронный код проще.
S>> Ты не читатель. Я как раз и говорю, что виртуальные потоки хороши для старого синхронного кода.
·>С этим я и не спорю. И это офигенное преимущество — берём старый код и запускаем параллельно ничего не стесняясь.
С этим никто не спорит. Об этом я тебе сразу и писал. Проблема в поддержке старого и нового.
Так как Task отвечает не только за асинхронность, но и параллельность.

S>>Но для нового кода сложно использовать виртуальные потоки и Task так как задачи используются не только для асинхронного, но и параллельного кода.

·>А вот с этим спорю. В чём сложность-то?

Ну ты сам приводил кучу когда, где использовались различные апи.


S>>То есть код надо переделывать на async/await.

·>Зачем надо?

Ну вот как с тобой разговаривать? Прочитай еще раз внимательно

Так как Task отвечает не только за асинхронность, но и параллельность.

и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.