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

8.5 Структурная конкурентность

oxl
let (a, b) = scope {
  let ha = spawn loadA()
  let hb = spawn loadB()
  (ha.join()?, hb.join()?)
}
  • spawn допустим только лексически внутри scope { … } или с явным s.spawn(…), где s: &Scope.
  • Выход из scope ждёт завершения всех дочерних задач.
  • Первая ошибка или паника дочерней задачи, не обработанная в теле, отменяет остальные дочерние задачи; scope возвращает эту ошибку. Тип scope — тип тела | E дочерних задач | Panicked.
  • Фоновый scope узла node.background живёт до остановки узла; в нём выполняются шаги ~>, хвосты пайплайнов (§10.6) и задачи node.background.spawn(…). Задачи там при остановке узла получают отмену с дренированием.

spawn-outside-scope

См. также

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