package kcas
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Module Kcas.Loc
Source
Shared memory locations.
Type of shared memory locations.
make initial
creates a new shared memory location with the initial
value.
The optional mode
argument defaults to Mode.obstruction_free
. If explicitly specified as Mode.lock_free
, the location will always be accessed using the lock-free operating mode. This may improve performance in rare cases where a location is updated frequently and obstruction-free read-only accesses would almost certainly suffer from interference.
make_array n initial
creates an array of n
new shared memory locations with the initial
value.
get_mode r
returns the operating mode of the shared memory location r
.
get_as f loc
is equivalent to f (get loc)
. The given function f
may raise the Retry.Later
exception to signal that the conditional load should be retried only after the location has been modified outside of the conditional load. It is also safe for the given function f
to raise any other exception to abort the conditional load.
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. The given function f
may raise the Retry.Later
exception to signal that the update should only be retried after the location has been modified outside of the update. It is also safe for the given function f
to raise any other exception to abort the update.
modify r f
is equivalent to update r f |> ignore
.
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).