sig
  type t = Mutex.t
  val create : unit -> Mutex.t
  val equal : Mutex.t -> Mutex.t -> bool
  val lock : Mutex.t -> unit
  val try_lock : Mutex.t -> bool
  val timedlock : Mutex.t -> Time.t -> bool
  val unlock : Mutex.t -> unit
  val am_holding_mutex : Mutex.t -> bool
  val critical_section : Mutex.t -> f:(unit -> 'a) -> 'a
  val update_signal : Mutex.t -> Condition.t -> f:(unit -> 'a) -> 'a
  val update_broadcast : Mutex.t -> Condition.t -> f:(unit -> 'a) -> 'a
end