`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`