sig module Counting : sig type t val make : int -> Semaphore.Counting.t val release : Semaphore.Counting.t -> unit val acquire : Semaphore.Counting.t -> unit val try_acquire : Semaphore.Counting.t -> bool val get_value : Semaphore.Counting.t -> int end module Binary : 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 end