sig type 'a create = unit -> (unit -> 'a option) * ('a -> 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