sig
  type t
  val create : unit -> Extlib.Concurrent.Lock.t
  val lock : Extlib.Concurrent.Lock.t -> unit
  val unlock : Extlib.Concurrent.Lock.t -> unit
  val try_lock : Extlib.Concurrent.Lock.t -> bool
  val synchronize : ?lock:Extlib.Concurrent.Lock.t -> ('-> 'b) -> '-> 'b
  val make : unit -> Extlib.Concurrent.lock
end