object Atomic extends Serializable
- Source
- Atomic.scala
- Alphabetic
- By Inheritance
- Atomic
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- class Macros extends HygieneUtilMacros with InlineMacros
Macros implementations for the Atomic type
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
- macro def apply[A, R <: Atomic[A]](initialValue: A)(implicit builder: AtomicBuilder[A, R]): R
Constructs an
Atomic[A]
reference.Constructs an
Atomic[A]
reference.Based on the
initialValue
, it will return the best, most specific type. E.g. you give it a number, it will return something inheriting fromAtomicNumber[A]
. That's why it takes anAtomicBuilder[T, R]
as an implicit parameter - but worry not about such details as it just works.- initialValue
is the initial value with which to initialize the Atomic reference
- builder
is the builder that helps us to build the best reference possible, based on our
initialValue
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def builderFor[A, R <: Atomic[A]](initialValue: A)(implicit builder: AtomicBuilder[A, R]): AtomicBuilder[A, R]
Returns the builder that would be chosen to construct Atomic references for the given
initialValue
. - def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- 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 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 synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- macro def withPadding[A, R <: Atomic[A]](initialValue: A, padding: PaddingStrategy)(implicit builder: AtomicBuilder[A, R]): R
Constructs an
Atomic[A]
reference, applying the provided PaddingStrategy in order to counter the "false sharing" problem.Constructs an
Atomic[A]
reference, applying the provided PaddingStrategy in order to counter the "false sharing" problem.Based on the
initialValue
, it will return the best, most specific type. E.g. you give it a number, it will return something inheriting fromAtomicNumber[A]
. That's why it takes anAtomicBuilder[A, R]
as an implicit parameter - but worry not about such details as it just works.Note that for Scala.js we aren't applying any padding, as it doesn't make much sense, since Javascript execution is single threaded, but this builder is provided for syntax compatibility anyway across the JVM and Javascript and we never know how Javascript engines will evolve.
- initialValue
is the initial value with which to initialize the Atomic reference
- padding
is the PaddingStrategy to apply
- builder
is the builder that helps us to build the best reference possible, based on our
initialValue
This is the API documentation for the Monix library.
Package Overview
monix.execution exposes lower level primitives for dealing with asynchronous execution:
Atomic
types, as alternative tojava.util.concurrent.atomic
monix.catnap exposes pure abstractions built on top of the Cats-Effect type classes:
monix.eval is for dealing with evaluation of results, thus exposing Task and Coeval.
monix.reactive exposes the
Observable
pattern:Observable
implementationsmonix.tail exposes Iterant for purely functional pull based streaming:
Batch
andBatchCursor
, the alternatives to Scala'sIterable
andIterator
respectively that we are using within Iterant's encodingYou can control evaluation with type you choose - be it Task, Coeval, cats.effect.IO or your own as long as you provide correct cats-effect or cats typeclass instance.