模組 Stdlib.Condition

module Condition: Condition

type t 

條件變數的類型。

val create : unit -> t

create() 建立並返回一個新的條件變數。此條件變數應(在程式設計師的觀念中)與某個互斥鎖 m 以及受互斥鎖 m 保護的資料結構的某個屬性 P 相關聯。

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

只有在 m 是與條件變數 c 相關聯的互斥鎖,並且只有在 m 目前已鎖定的情況下,才允許呼叫 wait c m。此呼叫將原子性地解鎖互斥鎖 m,並暫停目前執行緒於條件變數 c。此執行緒稍後可以在條件變數 c 通過 Condition.signalCondition.broadcast 發出訊號後被喚醒;然而,它也可能在沒有任何原因的情況下被喚醒。在 wait 返回之前,互斥鎖 m 會再次被鎖定。我們不能假設與條件變數 c 相關聯的屬性 Pwait 返回時成立;我們必須在呼叫 wait 後明確測試 P 是否成立。

val signal : t -> unit

signal c 會喚醒等待在條件變數 c 上的其中一個執行緒(如果有的話)。如果沒有任何執行緒在等待,則此呼叫無效。

建議在臨界區內呼叫 signal c,也就是說,在與 c 相關聯的互斥鎖 m 被鎖定時呼叫。

val broadcast : t -> unit

broadcast c 會喚醒所有等待在條件變數 c 上的執行緒。如果沒有任何執行緒在等待,則此呼叫無效。

建議在臨界區內呼叫 broadcast c,也就是說,在與 c 相關聯的互斥鎖 m 被鎖定時呼叫。