OxL Справочник OxL
РусскийEnglish

8.3 Task

  • Task<T, E> — ленивое вычисление. Создаётся в позициях из §6.3 или явно Task.of { … }.
  • Task перемещаемый и одноразовый: его потребляет ровно одна операция — await, spawn, комбинатор или запуск цепочки.
  • spawn t (только внутри scope, §8.5) запускает задачу и возвращает Handle<T, E>: h.join() -> T | E | Cancelled, h.cancel().
КомбинаторРезультатПоведение
all(t1, …, tn)(T1, …, Tn) | E1 | … | Enпараллельно; первая ошибка отменяет остальные
race(t1, …, tn)T1 | … | Tn | E1 | … | Enпервый завершившийся (успех или ошибка), остальные отменяются
any(t1, …, tn)T1 | … | Tn | AllFailedпервый успешный; AllFailed содержит все ошибки
all(list)List<T> | Eдля однотипного списка задач

Параметры комбинаторов объявлены lazy, поэтому all(Users.get(1), Orders.list(1)) не выполняет вызовы до запуска комбинатора.

task-reuse

См. также

Исходник: docs/spec/oxl-standard.md