functor (R : Reagents.S) ->
sig
module Countdown_latch :
sig
type t
type ('a, 'b) reagent = ('a, 'b) R.t
val create : int -> t
val get_count : t -> (unit, int) reagent
val await : t -> (unit, unit) reagent
val count_down : t -> (unit, unit) reagent
end
module Exchanger :
sig
type 'a t
type ('a, 'b) reagent = ('a, 'b) R.t
val create : ?name:string -> unit -> 'a t
val exchange : 'a t -> ('a, 'a) reagent
end
module Lock :
sig
type ('a, 'b) reagent = ('a, 'b) R.t
type t
val create : unit -> t
val acq : t -> (unit, unit) reagent
val rel : t -> (unit, bool) reagent
val try_acq : t -> (unit, bool) reagent
end
module Recursive_lock :
functor (Tid : sig val get_tid : unit -> int end) ->
sig
type ('a, 'b) reagent = ('a, 'b) R.t
type t
val create : unit -> t
val acq : t -> (unit, unit) reagent
val rel : t -> (unit, bool) reagent
val try_acq : t -> (unit, bool) reagent
end
module Condition_variable :
sig
type ('a, 'b) reagent = ('a, 'b) R.t
type lock = Lock.t
type t
val create : unit -> t
val wait : lock -> t -> bool
val signal : t -> unit
val broadcast : t -> unit
end
end