Spec-Zone.ru › OCaml 5.0

Модуль Событие

module Event: sig .. end

Синхронное взаимодействие первого класса.

Этот модуль реализует синхронное межпотоковое взаимодействие через каналы. Как и в системе Concurrent ML Джона Реппи, события взаимодействия являются значениями первого класса: они могут быть построены и объединены независимо, прежде чем быть предложенными для взаимодействия.

type 'a channel 

Тип каналов связи, передающих значения типа 'a.

val new_channel : unit -> 'a channel

Возвращает новый канал.

type +'a event 

Тип событий взаимодействия, возвращающих результат типа 'a.

val send : 'a channel -> 'a -> unit event

send ch v возвращает событие, состоящее в отправке значения v по каналу ch. Значение результата этого события равно ().

val receive : 'a channel -> 'a event

receive ch возвращает событие, состоящее в получении значения из канала ch. Значение результата этого события — полученное значение.

val always : 'a -> 'a event

always v возвращает событие, всегда готовое к синхронизации. Значение результата этого события равно v.

val choose : 'a event list -> 'a event

choose evl возвращает событие, являющееся альтернативой всем событиям в списке evl.

val wrap : 'a event -> ('a -> 'b) -> 'b event

wrap ev fn возвращает событие, выполняющее те же операции взаимодействия, что и ev, а затем применяет функцию постобработки fn к значению возврата.

val wrap_abort : 'a event -> (unit -> unit) -> 'a event

wrap_abort ev fn возвращает событие, выполняющее те же операции взаимодействия, что и ev, но если оно не выбрано, функция fn вызывается после синхронизации.

val guard : (unit -> 'a event) -> 'a event

guard fn возвращает событие, которое при синхронизации вычисляет fn() и ведет себя как результирующее событие. Это позволяет вычислять события с побочными эффектами во время операции синхронизации.

val sync : 'a event -> 'a

«Синхронизация» на событии: предоставляет весь мир внешнему миру все возможности взаимодействия, указанные в событии, и блокируется, пока не произойдет одно из взаимодействий. Значение результата этого взаимодействия возвращается.

val select : 'a event list -> 'a

«Синхронизация» на альтернативе событий. select evl — сокращение для sync(choose evl).

val poll : 'a event -> 'a option

Неблокирующая версия Event.sync: предоставляет весь мир внешнему миру все возможности взаимодействия, указанные в событии, и если одно из них может произойти немедленно, выполняет его и возвращает Some r где r — значение результата этого взаимодействия. В противном случае возвращает None без блокировки.

© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/Event.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API