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