trait MemoryLocation[A] extends AnyRef
Extension point for MCAS: an MCAS operation can be executed on any number of objects which conform to this interface.
However, the methods of this interface should only ever be called by the MCAS implementation. An MCAS operation is only safe and atomic if ALL reads and writes go through the MCAS implementation.
These are the low-level, primitive operations
required by the MCAS implementation. They are
easily implemented by, e.g., having an
AtomicReference or similar. (For implementations
of this interface, see SimpleMemoryLocation or
the various Refs in the choam-core module.)
Some method names are prefixed by unsafe because
these are necessarily side-effecting methods,
and they're also very low-level. Other methods are
not "unsafe", since they're mostly harmless.
Generally, this interface should not be used directly. Instead, use MCAS, or an even higher level abstraction.
- Source
- MemoryLocation.scala
- Alphabetic
- By Inheritance
- MemoryLocation
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def id: Long
- abstract def unsafeCasMarkerV(ov: WeakReference[AnyRef], nv: WeakReference[AnyRef]): Boolean
Used by EMCAS; volatile
- abstract def unsafeCasV(ov: A, nv: A): Boolean
volatile
- abstract def unsafeCmpxchgMarkerR(ov: WeakReference[AnyRef], nv: WeakReference[AnyRef]): WeakReference[AnyRef]
Used by EMCAS; release
- abstract def unsafeCmpxchgR(ov: A, nv: A): A
release
- abstract def unsafeCmpxchgV(ov: A, nv: A): A
volatile
- abstract def unsafeCmpxchgVersionV(ov: Long, nv: Long): Long
volatile
- abstract def unsafeGetMarkerV(): WeakReference[AnyRef]
Used by EMCAS; volatile
- abstract def unsafeGetP(): A
plain
- abstract def unsafeGetV(): A
volatile
- abstract def unsafeGetVersionV(): Long
volatile
- abstract def unsafeSetP(nv: A): Unit
plain
- abstract def unsafeSetV(nv: A): Unit
volatile
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 asInstanceOf[T0]: T0
- Definition Classes
- Any
- 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
- 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()