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

kw to

Контекстное слово — ветки select (§8.7)

Список слов: §1.4

Синтаксис

ebnf
SelArm      = ( "recv" Pattern "from" Expr | "send" Expr "to" Expr | "after" Expr | "else" ) "=>" Expr ;

Грамматика: Прил. A

Определяется в

Примеры

oxl
let (tx, rx) = chan<Job>(cap: JOB_QUEUE)

select {
  recv job from rx  => process(job)
  send r to results => sent += 1
  after IDLE_TIMEOUT => log.info("idle")
  else              => tick()          // неблокирующий вариант
}

— 8.7 Каналы и select

oxl
static balances: Map<AccountId, TVar<Money>> = …

atomic {
  let a = balances[from].get()
  check(a >= amt)                 // иначе транзакция ждёт изменения и повторяется
  balances[from].set(a - amt)
  balances[to].update(.add(amt))
}

— 8.9 Программная транзакционная память

Связанные диагностики

atomic-effects

См. также