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.signal
或 Condition.broadcast
發出訊號後被喚醒;然而,它也可能在沒有任何原因的情況下被喚醒。在 wait
返回之前,互斥鎖 m
會再次被鎖定。我們不能假設與條件變數 c
相關聯的屬性 P 在 wait
返回時成立;我們必須在呼叫 wait
後明確測試 P 是否成立。
val signal : t -> unit
signal c
會喚醒等待在條件變數 c
上的其中一個執行緒(如果有的話)。如果沒有任何執行緒在等待,則此呼叫無效。
建議在臨界區內呼叫 signal c
,也就是說,在與 c
相關聯的互斥鎖 m
被鎖定時呼叫。
val broadcast : t -> unit
broadcast c
會喚醒所有等待在條件變數 c
上的執行緒。如果沒有任何執行緒在等待,則此呼叫無效。
建議在臨界區內呼叫 broadcast c
,也就是說,在與 c
相關聯的互斥鎖 m
被鎖定時呼叫。