module Mutex: Mutex
type
t
互斥鎖的類型。
val create : unit -> t
回傳一個新的互斥鎖。
val lock : t -> unit
鎖定指定的互斥鎖。任何時間都只有一個執行緒可以鎖定互斥鎖。嘗試鎖定已被其他執行緒鎖定的互斥鎖的執行緒將會暫停,直到其他執行緒解鎖互斥鎖。
Sys_error
(行為取決於平台)Sys_error
如果呼叫 Mutex.lock
的執行緒已鎖定互斥鎖。val try_lock : t -> bool
與 Mutex.lock
相同,但如果互斥鎖已被鎖定,則不會暫停呼叫執行緒:在這種情況下會立即回傳 false
。如果互斥鎖未鎖定,則鎖定它並回傳 true
。
val unlock : t -> unit
解鎖指定的互斥鎖。其他嘗試鎖定互斥鎖而被暫停的執行緒將會重新啟動。互斥鎖必須先前已由呼叫 Mutex.unlock
的執行緒鎖定。
Sys_error
。Sys_error
如果互斥鎖未鎖定或由另一個執行緒鎖定。val protect : t -> (unit -> 'a) -> 'a
protect mutex f
在 mutex
被鎖定的臨界區段中執行 f()
(使用 Mutex.lock
);然後它會負責釋放 mutex
,無論 f()
回傳值或引發例外。
即使在某些訊號處理程式中引發非同步例外 (例如 Sys.Break
),也保證解鎖操作總是會發生。