package kcas
Library
Module
Module type
Parameter
Class
Class type
Shared memory locations.
val make : 'a -> 'a t
make initial
creates a new shared memory location with the initial
value.
val get_id : 'a t -> int
get_id r
returns the unique id of the shared memory location r
.
val get : 'a t -> 'a
get r
reads the current value of the shared memory location r
.
val compare_and_set : 'a t -> 'a -> 'a -> bool
compare_and_set r before after
atomically updates the shared memory location r
to the after
value if the current value of r
is the before
value.
update r f
repeats let b = get r in compare_and_set r b (f b)
until it succeeds and then returns the b
value. It is safe for the given function f
to raise an exception to abort the update.
exchange r after
atomically updates the shared memory location r
to the after
value and returns the current value (before the exchange).
set r after
atomically updates the shared memory location r
to the after
value.
fetch_and_add r n
atomically increments the value of r
by n
, and returns the current value (before the increment).