kw scope
Зарезервированное слово
Список слов: §1.4
Синтаксис
Scope = "scope" Block ;Грамматика: Прил. A
Определяется в
- 8.5 Структурная конкурентность — spawn допустим только лексически внутри scope { …
- 6.6 Паника — Причины: переполнение, деление на ноль, выход за границы, x!
- 8.2 Точки приостановки — Задача может уступить поток только в точках приостановки
- 8.3 Task — Task<T, E> — ленивое вычисление.
- 10.4 Broadcast — локальная рассылка — Broadcast<T> доставляет каждый опубликованный элемент всем текущим подписчикам.
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
Примеры
let (a, b) = scope {
let ha = spawn loadA()
let hb = spawn loadB()
(ha.join()?, hb.join()?)
}— 8.5 Структурная конкурентность
let prices = Broadcast<Tick>(buffer: TICK_BUFFER, slow: .DropOldest, replay: 1)
scope {
spawn { for await t in Exchange.feed() { prices.publish(t) } }
spawn { for await t in prices.subscribe() { ui.render(t) } }
spawn { for await t in prices.subscribe() { stats.add(t) } }
}
impl Market {
rpc ticks() -> stream<Shared<Tick>, Lagged> => prices.subscribe() // каждому клиенту
}— 10.4 Broadcast — локальная рассылка
Связанные диагностики
spawn-outside-scope, task-reuse