sig type t = Mutex.t val create : unit -> t val lock : t -> unit val try_lock : t -> bool val unlock : t -> unit val critical_section : t -> f:(unit -> 'a) -> 'a end