package mcas
- Source
- package.scala
- Alphabetic
- By Inheritance
- mcas
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- final class Consts extends AnyRef
- final class Descriptor extends DescriptorPlatform
- final class LogEntry[A] extends WdLike[A]
- sealed trait Mcas extends AnyRef
Common interface for MCAS (i.e., k-CAS) implementations
- final class McasStatus extends AnyRef
- 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.
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
AtomicReferenceor similar. (For implementations of this interface, seeSimpleMemoryLocationor the variousRefs in thechoam-coremodule.)Some method names are prefixed by
unsafebecause 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.
- abstract class PaddedMemoryLocationPadding extends AnyRef
- abstract class RefIdGenBase extends PaddedMemoryLocationPadding
- abstract class ThreadConfinedMCASPlatform extends UnsealedMcas
- final class Version extends AnyRef
- sealed abstract class WdLike[A] extends AnyRef
Value Members
- object Descriptor
- object Mcas extends McasCompanionPlatform
- object MemoryLocation extends MemoryLocationInstances0
- object NullMcas extends UnsealedMcas
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
Rxnwhich is known not to actually do any k-CASes.