sig
  type t
  val make : bool -> Semaphore.Binary.t
  val release : Semaphore.Binary.t -> unit
  val acquire : Semaphore.Binary.t -> unit
  val try_acquire : Semaphore.Binary.t -> bool
end