sig
  val create : ?message:string -> string -> bool
  val create_exn : ?message:string -> string -> unit
  val blocking_create : ?message:string -> string -> unit
  val unlock : string -> unit
  val critical_section : ?message:string -> string -> f:(unit -> 'a) -> 'a
end