Module Condition
structure Condition = struct ... end
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 do
Condition.wait c m
done;
if 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
.