module Condition: Condition
type
t
条件变量的类型。
val create : unit -> t
create()
创建并返回一个新的条件变量。此条件变量应(在程序员的脑海中)与某个互斥量 m
以及由互斥量 m
保护的数据结构的某个属性 P 相关联。
val wait : t -> Mutex.t -> unit
调用 wait c m
仅在 m
是与条件变量 c
关联的互斥量,并且仅在 m
当前处于锁定状态时才允许。此调用会原子地解锁互斥量 m
并挂起条件变量 c
上的当前线程。此线程稍后可以在条件变量 c
通过 Condition.signal
或 Condition.broadcast
发出信号后被唤醒;但是,它也可能无缘无故被唤醒。在 wait
返回之前,互斥量 m
会再次被锁定。当 wait
返回时,不能假设与条件变量 c
关联的属性 P 成立;必须在调用 wait
后显式测试 P 是否成立。
val signal : t -> unit
signal c
唤醒等待条件变量 c
上的一个线程(如果存在)。如果没有线程等待,则此调用无效。
建议在临界区内调用 signal c
,即在与 c
关联的互斥量 m
被锁定的同时调用。
val broadcast : t -> unit
broadcast c
唤醒所有等待条件变量 c
上的线程。如果没有线程等待,则此调用无效。
建议在临界区内调用 broadcast c
,即在与 c
关联的互斥量 m
被锁定的同时调用。