package ocaml-base-compiler

  1. Overview
  2. Docs
Official release 4.08.0

Install

Dune Dependency

Authors

Maintainers

Sources

4.08.0.tar.gz
sha256=c8ff78d010cb037ac6d6729e40ebdbee109218899007ef23a20b8f459ac186d6
md5=42ed24e9a7c0e3998cab7d5e7c9f7618

doc/threads/Condition/index.html

Module Condition

Condition variables to synchronize between threads.

Condition variables are used when one thread wants to wait until another thread has finished doing something: the former thread 'waits' on the condition variable, the latter thread 'signals' the condition when it is done. Condition variables should always be protected by a mutex. The typical use is (if D is a shared data structure, m its mutex, and c is a condition variable):

  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

The type of condition variables.

val create : unit -> t

Return a new condition variable.

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

wait c m atomically unlocks the mutex m and suspends the calling process on the condition variable c. The process will restart after the condition variable c has been signalled. The mutex m is locked again before wait returns.

val signal : t -> unit

signal c restarts one of the processes waiting on the condition variable c.

val broadcast : t -> unit

broadcast c restarts all processes waiting on the condition variable c.

OCaml

Innovation. Community. Security.