dev.tauri.choam.internal.mcas

Members list

Type members

Classlikes

final class Descriptor

Attributes

Companion
object
Source
Descriptor.scala
Supertypes
class Object
trait Matchable
class Any
object Descriptor

Attributes

Companion
class
Source
Descriptor.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Descriptor.type
final class LogEntry[A] extends WdLike[A]

Attributes

Source
WdLike.scala
Supertypes
trait WdLike[A]
class Object
trait Matchable
class Any
sealed trait Mcas

Common interface for MCAS (i.e., k-CAS) implementations

Common interface for MCAS (i.e., k-CAS) implementations

Attributes

Companion
object
Source
Mcas.scala
Supertypes
class Object
trait Matchable
class Any
object Mcas

Attributes

Companion
trait
Source
Mcas.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Mcas.type
trait MemoryLocation[A]

Extension point for MCAS: an MCAS operation can be executed on any number of objects which conform to this interface.

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
Source
MemoryLocation.scala
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion
trait
Source
MemoryLocation.scala
Supertypes
class Object
trait Matchable
class Any
Self type
object NullMcas

This is a very limited MCAS implementation, which can only perform *empty* MCAS operations (i.e., not even reading is implemented).

This is a very limited MCAS implementation, which can only perform *empty* MCAS operations (i.e., not even reading is implemented). All other operations throw an UnsupportedOperationException.

It can be useful in special cases (for low-level optimization), when it is necessary to immediately execute a Rxn which is known not to actually do any k-CASes.

Attributes

Source
NullMcas.scala
Supertypes
trait Mcas
class Object
trait Matchable
class Any
Self type
NullMcas.type

Attributes

Source
ThreadConfinedMCASPlatform.scala
Supertypes
trait Mcas
class Object
trait Matchable
class Any
sealed trait WdLike[A]

Attributes

Source
WdLike.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class LogEntry[A]