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.
Attributes
- Companion:
- object
- Graph
- Supertypes
- Known subtypes
- class Synchronized[A]