sig type 'a t = 'a Semaphore.t val init : 'a option -> 'a t val signal : 'a t -> 'a -> unit val wait : 'a t -> 'a val get : 'a t -> 'a option val look : 'a t -> 'a option val ounit_tests : unit -> OUnit.test end