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
在一个临界区运行 f()
,其中 mutex
被锁定(使用 Mutex.lock
);然后它负责释放 mutex
,无论 f()
返回了一个值还是抛出了一个异常。
解锁操作保证始终发生,即使在某些信号处理程序中引发异步异常(例如 Sys.Break
) 的情况下。