Sync.RwlockSourceCreates a reader-writer lock with a fresh existential key type.
Like create. Useful in module definitions, where GADTs cannot be unpacked.
val with_write :
'k 'a ('b : value_or_null). Await_kernel.Sync.t @ local ->
'k t ->
f:
(Await_kernel.Sync.t @ local ->
('k Await_capsule__.Import.Capsule.Access.t ->
'a @ portable contended) @ local once) @ local once portable unyielding ->
'a @ portable contendedwith_write s t ~f locks t for writing and runs f, providing it access to the capsule. The Sync.t is passed to f to allow further use of synchronization primitives.
val with_write_or_cancel :
'k 'a ('b : value_or_null). Await_kernel.Sync.t @ local ->
Await_kernel.Cancellation.t @ local ->
'k t ->
f:
(Await_kernel.Sync.t @ local ->
('k Await_capsule__.Import.Capsule.Access.t ->
'a @ portable contended) @ local once) @ local once portable unyielding ->
'a Await_kernel.Or_canceled.t @ portable contendedwith_write_or_cancel s c t ~f is Completed (with_write s t ~f) if c is not canceled, otherwise it is Canceled.
val with_read :
'k 'a ('b : value_or_null). Await_kernel.Sync.t @ local ->
'k t ->
f:
(Await_kernel.Sync.t @ local ->
('k Await_capsule__.Import.Capsule.Access.t @ shared ->
'a @ portable contended) @ local once) @ local once portable unyielding ->
'a @ portable contendedwith_read s t ~f locks t for reading and runs f, providing it shared access to the capsule. The Sync.t is passed to f to allow further use of synchronization primitives.
val with_read_or_cancel :
'k 'a ('b : value_or_null). Await_kernel.Sync.t @ local ->
Await_kernel.Cancellation.t @ local ->
'k t ->
f:
(Await_kernel.Sync.t @ local ->
('k Await_capsule__.Import.Capsule.Access.t @ shared ->
'a @ portable contended) @ local once) @ local once portable unyielding ->
'a Await_kernel.Or_canceled.t @ portable contendedwith_read_or_cancel s c t ~f is Completed (with_read s t ~f) if c is not canceled, otherwise it is Canceled.
Functions that poison or freeze the lock if the provided callback raises an exception.