package kcas
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=bfc2974132d7b18551c3bdfafa6d9fad359cb3230676d16a2958855e21a51df5
sha512=02be6854ebb671602629bf78871d66e23d98a52ba3f1fb212c86537a0b32d8bfad3548e14ad38abafe98533f93a882485a7ab5586c52b3d3f446a2668ec502ac
doc/kcas/Kcas/index.html
Module Kcas
Source
Type of shared memory reference
Type of compare and swap value
The type of CAS result.
ref x
returns a reference on a shared memory ceils containing the value x
mk_cas a o n
returns a new CAS value, which when performed, updates the reference a
to n
if the current content of a
is o
set r n
updates the reference r
to value n
directly. Not Safe to use with shared memory !
cas r e u
updates the reference r
to value u
if the current content of r
is e
.
kCAS l
performs a lock-free multi-word CAS and returns true
if the multi-word CAS is successful.
kCAS requires ref
of provided operations to follow a global total order. To eliminate a class of bugs kCAS
presorts provided operations, and that increases algorithm's complexity to n log n. If user is able to ensure said order in some other way, use presort
switch to disable sorting and ordering checks, thus improving worst-case complexity to n.
try_map r f
invokes f c
, where c
is the result of get r
. If the result of f c
is None
, then Aborted
is returned. If the result of f c
is Some v
, then attempt to CAS update r
from c
to v
. If the CAS succeeds, then Success c
is returned. If the CAS fails, then Failed
is returned.
Like try_map
but retries on CAS failure. Hence, map r f
never returns Failed
.