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

8.8 Локальные акторы

oxl
actor Session {
  var cart: Cart = Cart.empty()
  msg add(item: Item) { cart.push(item) }
  msg total() -> Money { cart.sum() }
}

let s = spawn Session()           // ActorRef<Session>
s.add(item) -> s.total() -> show(it)
  • Сообщения обрабатываются строго по одному в порядке поступления от каждого отправителя.
  • Вызов msg — приостанавливаемый; завершается после обработки сообщения и возвращает результат. Для «отправил и забыл» — ~> или spawn.
  • Состояние актора (var) доступно только из его msg. Аргументы и результаты ДОЛЖНЫ быть передаваемыми (§7.3).
  • Ожидание другого актора внутри msg допустимо; циклические ожидания анализатор помечает предупреждением.
  • Распределённые (шардированные) акторы — §12.5.

actor-cycle

См. также

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