A Ref is a purely functional description of a mutable reference. The
fundamental operations of a Ref are set and get. set sets the
reference to a new value. get gets the current value of the reference.
By default, Ref is implemented in terms of compare and swap operations for
maximum performance and does not support performing effects within update
operations. If you need to perform effects within update operations you can
create a Ref.Synchronized, a specialized type of Ref that supports
performing effects within update operations at some cost to performance. In
this case writes will semantically block other writers, while multiple
readers can read simultaneously.
NOTE: While Ref provides the functional equivalent of a mutable reference,
the value inside the Ref should normally be immutable since compare and
swap operations are not safe for mutable values that do not support
concurrent access. If you do need to use a mutable value Ref.Synchronized
will guarantee that access to the value is properly synchronized.
- Companion:
- object
Value members
Abstract methods
Atomically modifies the Ref with the specified function, which computes a
return value for the modification. This is a more powerful version of
update.
Atomically modifies the Ref with the specified function, which computes a
return value for the modification. This is a more powerful version of
update.
Concrete methods
Atomically writes the specified value to the Ref, returning the value
immediately before modification.
Atomically writes the specified value to the Ref, returning the value
immediately before modification.
Atomically modifies the Ref with the specified function, returning the
value immediately before modification.
Atomically modifies the Ref with the specified function, returning the
value immediately before modification.
Atomically modifies the Ref with the specified partial function,
returning the value immediately before modification. If the function is
undefined on the current value it doesn't change it.
Atomically modifies the Ref with the specified partial function,
returning the value immediately before modification. If the function is
undefined on the current value it doesn't change it.
Atomically modifies the Ref with the specified partial function, which
computes a return value for the modification if the function is defined on
the current value otherwise it returns a default value. This is a more
powerful version of updateSome.
Atomically modifies the Ref with the specified partial function, which
computes a return value for the modification if the function is defined on
the current value otherwise it returns a default value. This is a more
powerful version of updateSome.
Atomically modifies the Ref with the specified function.
Atomically modifies the Ref with the specified function.
Atomically modifies the Ref with the specified function and returns the
updated value.
Atomically modifies the Ref with the specified function and returns the
updated value.
Atomically modifies the Ref with the specified partial function. If the
function is undefined on the current value it doesn't change it.
Atomically modifies the Ref with the specified partial function. If the
function is undefined on the current value it doesn't change it.
Atomically modifies the Ref with the specified partial function. If the
function is undefined on the current value it returns the old value without
changing it.
Atomically modifies the Ref with the specified partial function. If the
function is undefined on the current value it returns the old value without
changing it.