type 'pref t
type pref = [ `NoPref | `Readers | `Writers ]
type 'pref kind
val r_pref : [ `Readers ] kind
val w_pref : [ `Writers ] kind
val np_pref : [ `NoPref ] kind
val create : 'pref kind -> 'pref t
val r_lock : [< pref ] t -> unit
val r_unlock : [< pref ] t -> unit
val w_lock : [< pref ] t -> unit
val w_unlock : [< pref ] t -> unit
val try_r_lock : [< pref ] t -> bool
val try_w_lock : [< pref ] t -> bool
val wrap_r_lock : [< pref ] t -> (unit -> 'a) -> 'a
val try_wrap_r_lock : [< pref ] t -> (unit -> 'a) -> 'a option
val btry_wrap_r_lock : [< pref ] t -> (unit -> unit) -> bool
val wrap_w_lock : [< pref ] t -> (unit -> 'a) -> 'a
val try_wrap_w_lock : [< pref ] t -> (unit -> 'a) -> 'a option
val btry_wrap_w_lock : [< pref ] t -> (unit -> unit) -> bool