Packages

package mcas

Source
package.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. mcas
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. final class Consts extends AnyRef
  2. final class Descriptor extends DescriptorPlatform
  3. final class LogEntry[A] extends WdLike[A]
  4. sealed trait Mcas extends AnyRef

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

  5. final class McasStatus extends AnyRef
  6. 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 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.

  7. abstract class PaddedMemoryLocationPadding extends AnyRef
  8. abstract class RefIdGenBase extends PaddedMemoryLocationPadding
  9. abstract class ThreadConfinedMCASPlatform extends UnsealedMcas
  10. final class Version extends AnyRef
  11. sealed abstract class WdLike[A] extends AnyRef

Value Members

  1. object Descriptor
  2. object Mcas extends McasCompanionPlatform
  3. object MemoryLocation extends MemoryLocationInstances0
  4. 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 Rxn which is known not to actually do any k-CASes.

Inherited from AnyRef

Inherited from Any

Ungrouped