sig
  type t
  val create : unit -> BatRMutex.t
  val lock : BatRMutex.t -> unit
  val try_lock : BatRMutex.t -> bool
  val unlock : BatRMutex.t -> unit
  val synchronize : ?lock:BatRMutex.t -> ('a -> 'b) -> 'a -> 'b
  val make : unit -> BatConcurrent.lock
end