Spec-Zone.ru › OCaml 4.14

Модуль Condition

module Condition: sig .. end

Переменные состояния для синхронизации потоков.

Переменные состояния используются, когда один поток хочет ждать, пока другой поток закончит что-то делать: первый поток «ждет» на переменной состояния, второй поток «сигнализирует» состояние, когда он закончит. Переменные состояния всегда должны защищаться мьютексом. Типичное использование (если D это общая структура данных, m её мьютекс, и c это переменная состояния):

     Mutex.lock m;
     while (* some predicate P over D is not satisfied *) do
       Condition.wait c m
     done;
     (* Modify D *)
     if (* the predicate P over D is now satisfied *) then Condition.signal c;
     Mutex.unlock m
   
type t 

Тип переменных состояния.

val create : unit -> t

Возвращает новую переменную состояния.

val wait : t -> Mutex.t -> unit

wait c m атомарно разблокирует мьютекс m и приостанавливает вызывающий процесс на переменной состояния c. Процесс перезапустится после того, как переменная состояния c будет сигнализирована. Мьютекс m снова заблокируется перед тем, как wait вернётся.

val signal : t -> unit

signal c перезапускает один из процессов, ожидающих на переменной состояния c.

val broadcast : t -> unit

broadcast c перезапускает все процессы, ожидающие на переменной состояния c.

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

Spec-Zone.ru

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