模块 Stdlib.Condition

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.signalCondition.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 被锁定的同时调用。