sig
  type 'a create = unit -> (unit -> 'a option) * ('-> unit)
  val one_reader_one_writer : 'a create
  val one_reader_many_writers : 'a create
  val many_readers_one_writer : 'a create
  val many_readers_many_writers : 'a create
end