final class RefM[A] extends Serializable
A mutable atomic reference for the IO monad. This is the IO equivalent of
a volatile var, augmented with atomic effectful operations, which make it
useful as a reasonably efficient (if low-level) concurrency primitive.
Unlike Ref, RefM allows effects in atomic operations, which makes the
structure slower but more powerful than Ref.
for { ref <- RefM(2) v <- ref.update(_ + putStrLn("Hello World!").attempt.void *> IO.now(3)) _ <- putStrLn("Value = " + v) // Value = 5 } yield ()
- Alphabetic
- By Inheritance
- RefM
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
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
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
get: IO[Nothing, A]
Reads the value from the
Ref. -
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
modify[B](f: (A) ⇒ IO[Nothing, (B, A)]): IO[Nothing, B]
Atomically modifies the
RefMwith the specified function, which computes a return value for the modification.Atomically modifies the
RefMwith the specified function, which computes a return value for the modification. This is a more powerful version ofupdate. -
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
set(a: A): IO[Nothing, Unit]
Writes a new value to the
Ref, with a guarantee of immediate consistency (at some cost to performance). -
final
def
setLater(a: A): IO[Nothing, Unit]
Writes a new value to the
Refwithout providing a guarantee of immediate consistency. -
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
update(f: (A) ⇒ IO[Nothing, A]): IO[Nothing, A]
Atomically modifies the
RefMwith the specified function, returning the value immediately after modification. -
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )