Re[66]: Можно ли избавиться от async|await?
От: · Великобритания  
Дата: 14.01.26 11:06
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>·>Product coreApi(long id) {

S>·>async Product coreApi(long id,  CancellationToken token = default) {

S>·>ИЧСХ, вот такой простой линейный код составляет 99% типичного приложения. Параллелизация обычно где-то на уровне фреймворка (ну там входящие HTTP-запросы какие-нибудь).
S>Ошибаешься. Их куча я тебе уже приводил примеры асинхронной очереди через TaskCompletionSource.
S>А он используется в различных алгоритмах очень часто.
Ты приводил ненужный код, который ничего ценного с т.з. бизнеса не делает. Тебе просто не нужна асинхронная очередь, если у тебя нет асинхронного кода.
Я тебе предложил сравнить код бизнес-логики выше, но ты проигнорировал.

S>>>На самом деле Task были придуманы еще в 12 году. В Яве виртуальные потоки появились значительно позже, а StructuredTaskScope так вообще еще превью.

S>·>ДЕСЯТЫЙ РАЗ ПОВТОРЯЮ! Task — это аналог CompletableFuture. И появилось оно в 13 году что-ли. Заметь в моём коде вообще нигде Task/CompletableFuture нет. Они просто не нужны.
S>Где же await в Яве. Аналог асинхронного программирования в первых версиях фреймворка IAsyncResult
S> async/await это по сути реализация IEnumerable yield для задач.
async/await это по сути сахар, чтобы коллбеки получше выглядели. Без него можно писать как-то так:
CompletableFuture<Product> coreApi(long id) {
  return readFromFile(id, token)
    .thenCompose(d1 -> queryDb(id, d1 + 42)
      .thenCompose(d2 -> {
        synchronized(lock) { 
          return downloadFromRestApi(id, d2, d1)
            .thenApply(d3 -> new Product(d3, d1));
        }
      }));
}

Жуть полная. Поэтому и начали появляться на свет всякие reactive фреймворки. Но с виртуальными тредами это просто не нужно.

S>Кстати Linq в Java появился?

Нет.

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

S>·>Они делают асинхронный код ненужным.
S> Несогласен!
Твоё право, но факт отстаётся фактом.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.