sig
  type t
  val create : unit -> Mutex.t
  val lock : Mutex.t -> unit
  val try_lock : Mutex.t -> bool
  val unlock : Mutex.t -> unit
end