sig   type t = int * OUnitShared.scope   val create : '-> int * 'a   val lock : OUnitShared.shared -> int * OUnitShared.scope -> unit   val try_lock : OUnitShared.shared -> int * OUnitShared.scope -> bool   val unlock : OUnitShared.shared -> int * OUnitShared.scope -> unit   val with_lock :     OUnitShared.shared -> int * OUnitShared.scope -> (unit -> 'a) -> 'a end