sealed abstract class Ref[A] extends Serializable
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.
- Alphabetic
- By Inheritance
- Ref
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
get(implicit trace: Trace): UIO[A]
Reads the value from the
Ref. -
abstract
def
modify[B](f: (A) ⇒ (B, A))(implicit trace: Trace): UIO[B]
Atomically modifies the
Refwith the specified function, which computes a return value for the modification.Atomically modifies the
Refwith the specified function, which computes a return value for the modification. This is a more powerful version ofupdate. -
abstract
def
set(a: A)(implicit trace: Trace): UIO[Unit]
Writes a new value to the
Ref, with a guarantee of immediate consistency (at some cost to performance). -
abstract
def
setAsync(a: A)(implicit trace: Trace): UIO[Unit]
Writes a new value to the
Refwithout providing a guarantee of immediate consistency.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
addAndGet(delta: A)(implicit num: Numeric[A], trace: Trace): UIO[A]
Atomically adds
deltato the current value of theRefand returns the updated value. -
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @HotSpotIntrinsicCandidate()
-
final
def
decrementAndGet(implicit num: Numeric[A], trace: Trace): UIO[A]
Atomically decrements the current value of the
Refby 1 and returns the updated value. -
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
getAndAdd(delta: A)(implicit num: Numeric[A], trace: Trace): UIO[A]
Atomically adds
deltato the current value of theRef, returning the value immediately before modification. -
final
def
getAndDecrement(implicit num: Numeric[A], trace: Trace): UIO[A]
Atomically decrements the current value of the
Refby 1, returning the value immediately before modification. -
final
def
getAndIncrement(implicit num: Numeric[A], trace: Trace): UIO[A]
Atomically increments the current value of the
Refby 1, returning the value immediately before modification. -
def
getAndSet(a: A)(implicit trace: Trace): UIO[A]
Atomically writes the specified value to the
Ref, returning the value immediately before modification. -
def
getAndUpdate(f: (A) ⇒ A)(implicit trace: Trace): UIO[A]
Atomically modifies the
Refwith the specified function, returning the value immediately before modification. -
def
getAndUpdateSome(pf: PartialFunction[A, A])(implicit trace: Trace): UIO[A]
Atomically modifies the
Refwith the specified partial function, returning the value immediately before modification.Atomically modifies the
Refwith the specified partial function, returning the value immediately before modification. If the function is undefined on the current value it doesn't change it. -
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
incrementAndGet(implicit num: Numeric[A], trace: Trace): UIO[A]
Atomically increments the current value of the
Refby 1 and returns the updated value. -
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
modifySome[B](default: B)(pf: PartialFunction[A, (B, A)])(implicit trace: Trace): UIO[B]
Atomically modifies the
Refwith 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.Atomically modifies the
Refwith 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 ofupdateSome. -
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
update(f: (A) ⇒ A)(implicit trace: Trace): UIO[Unit]
Atomically modifies the
Refwith the specified function. -
def
updateAndGet(f: (A) ⇒ A)(implicit trace: Trace): UIO[A]
Atomically modifies the
Refwith the specified function and returns the updated value. -
def
updateSome(pf: PartialFunction[A, A])(implicit trace: Trace): UIO[Unit]
Atomically modifies the
Refwith the specified partial function.Atomically modifies the
Refwith the specified partial function. If the function is undefined on the current value it doesn't change it. -
def
updateSomeAndGet(pf: PartialFunction[A, A])(implicit trace: Trace): UIO[A]
Atomically modifies the
Refwith the specified partial function.Atomically modifies the
Refwith the specified partial function. If the function is undefined on the current value it returns the old value without changing it. -
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )