Сообщение Re[25]: Можно ли избавиться от async|await? от 16.12.2025 19:34
Изменено 16.12.2025 19:40 Serginio1
Re[25]: Можно ли избавиться от async|await?
Здравствуйте, novitk, Вы писали:
N>>>а) WhenAll тут не нужен.
S>>Нужен. Он хочет параллельно выполнять 2 задачи. Хотя в .Net есть еще и Parallel.
N>Просто прогони код с двумя await и свой и убедись, что результат одинаков. await, как раз тот сахар, который тут доктор прописал. WhenAll нужен когда число Task не определенно.
Согласен. Если сначала запустить 2 задачи а затем вызвать await будет одно и тоже.
WhenAll , что бы сократить код. Результат можно получить в цикле или нужно просто дождаться выполнение всех задач.
S>> Ну async/await сделан на основе Linq вернее yield в IEnumerable.
N>Я понимаю, что ты очень хочешь поделиться своими познаниями, но мы обзуждали разницу с jvm, а не на чьей основе он сделан.
Эти зеленые потоки уже обсуждали множество раз. Там единственный плюс, что все выплняется в одном потоке, поэтому не нужна синхронизация.
То же можно сделать и на C# со своим шедулером с одним потоком.
S>> В этом и вся прелесть .Net. Если сначала Linq тормозил, то затем его оптимизировали. Это же касается и async/await
N>Его некуда оптимизировать компилятором. Для реальных "green thread" нужно менять рантайм.
Ну появились ValueTask, оптимизируются и шедулеры. А green thread это вообще хрень.
N>>>а) WhenAll тут не нужен.
S>>Нужен. Он хочет параллельно выполнять 2 задачи. Хотя в .Net есть еще и Parallel.
N>Просто прогони код с двумя await и свой и убедись, что результат одинаков. await, как раз тот сахар, который тут доктор прописал. WhenAll нужен когда число Task не определенно.
Согласен. Если сначала запустить 2 задачи а затем вызвать await будет одно и тоже.
WhenAll , что бы сократить код. Результат можно получить в цикле или нужно просто дождаться выполнение всех задач.
S>> Ну async/await сделан на основе Linq вернее yield в IEnumerable.
N>Я понимаю, что ты очень хочешь поделиться своими познаниями, но мы обзуждали разницу с jvm, а не на чьей основе он сделан.
Эти зеленые потоки уже обсуждали множество раз. Там единственный плюс, что все выплняется в одном потоке, поэтому не нужна синхронизация.
То же можно сделать и на C# со своим шедулером с одним потоком.
S>> В этом и вся прелесть .Net. Если сначала Linq тормозил, то затем его оптимизировали. Это же касается и async/await
N>Его некуда оптимизировать компилятором. Для реальных "green thread" нужно менять рантайм.
Ну появились ValueTask, оптимизируются и шедулеры. А green thread это вообще хрень.
В современных версиях Java, таких как Java 8 и выше, зелёные потоки не используются по умолчанию, и управление потоками передаётся операционной системе.
Re[25]: Можно ли избавиться от async|await?
Здравствуйте, novitk, Вы писали:
N>>>а) WhenAll тут не нужен.
S>>Нужен. Он хочет параллельно выполнять 2 задачи. Хотя в .Net есть еще и Parallel.
N>Просто прогони код с двумя await и свой и убедись, что результат одинаков. await, как раз тот сахар, который тут доктор прописал. WhenAll нужен когда число Task не определенно.
Согласен. Если сначала запустить 2 задачи а затем вызвать await будет одно и тоже.
WhenAll , что бы сократить код. Результат можно получить в цикле или нужно просто дождаться выполнение всех задач.
S>> Ну async/await сделан на основе Linq вернее yield в IEnumerable.
N>Я понимаю, что ты очень хочешь поделиться своими познаниями, но мы обзуждали разницу с jvm, а не на чьей основе он сделан.
Эти зеленые потоки уже обсуждали множество раз. Там единственный плюс, что все выплняется в одном потоке, поэтому не нужна синхронизация.
То же можно сделать и на C# со своим шедулером с одним потоком.
S>> В этом и вся прелесть .Net. Если сначала Linq тормозил, то затем его оптимизировали. Это же касается и async/await
N>Его некуда оптимизировать компилятором. Для реальных "green thread" нужно менять рантайм.
Ну появились ValueTask, оптимизируются и шедулеры, оптимизируется и автомат переходов.
А green thread это вообще хрень.
N>>>а) WhenAll тут не нужен.
S>>Нужен. Он хочет параллельно выполнять 2 задачи. Хотя в .Net есть еще и Parallel.
N>Просто прогони код с двумя await и свой и убедись, что результат одинаков. await, как раз тот сахар, который тут доктор прописал. WhenAll нужен когда число Task не определенно.
Согласен. Если сначала запустить 2 задачи а затем вызвать await будет одно и тоже.
WhenAll , что бы сократить код. Результат можно получить в цикле или нужно просто дождаться выполнение всех задач.
S>> Ну async/await сделан на основе Linq вернее yield в IEnumerable.
N>Я понимаю, что ты очень хочешь поделиться своими познаниями, но мы обзуждали разницу с jvm, а не на чьей основе он сделан.
Эти зеленые потоки уже обсуждали множество раз. Там единственный плюс, что все выплняется в одном потоке, поэтому не нужна синхронизация.
То же можно сделать и на C# со своим шедулером с одним потоком.
S>> В этом и вся прелесть .Net. Если сначала Linq тормозил, то затем его оптимизировали. Это же касается и async/await
N>Его некуда оптимизировать компилятором. Для реальных "green thread" нужно менять рантайм.
Ну появились ValueTask, оптимизируются и шедулеры, оптимизируется и автомат переходов.
А green thread это вообще хрень.
В современных версиях Java, таких как Java 8 и выше, зелёные потоки не используются по умолчанию, и управление потоками передаётся операционной системе.