MemoryLocation

dev.tauri.choam.mcas.MemoryLocation
See theMemoryLocation companion object

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.

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Concise view

Value members

Abstract methods

def id0: Long
def id1: Long
def id2: Long
def id3: Long
def unsafeCasMarkerVolatile(ov: WeakReference[AnyRef], nv: WeakReference[AnyRef]): Boolean

Used by EMCAS

Used by EMCAS

Attributes

def unsafeCasVolatile(ov: A, nv: A): Boolean
def unsafeCmpxchgVolatile(ov: A, nv: A): A
def unsafeGetMarkerVolatile(): WeakReference[AnyRef]

Used by EMCAS

Used by EMCAS

Attributes

def unsafeSetPlain(nv: A): Unit