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
-
trait Serializableclass Objecttrait Matchableclass Any
- Known subtypes
-
class Synchronized[A]