Spec-Zone.ru › OCaml

Модуль Event

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-2024 INRIA.
https://ocaml.org/manual/5.2/api/Event.html

Spec-Zone.ru

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