template<typename Derived, typename T>
TrinyxRingBase class

TrinyxRingBase<Derived, T> — CRTP base for Vyukov sequence-number ring queues.

Provides:

  • Cell layout (sequence atomic + data)
  • Power-of-2 backing storage (InitStorage / ShutdownStorage)
  • EnqueuePos (producers always CAS or plain-store into this)
  • Capacity()

Derived classes are responsible for:

  • Calling InitStorage / ShutdownStorage in their own Initialize / Shutdown
  • Implementing TryPush (MP → CAS; SP → plain store)
  • Implementing TryPop / Consumer handle (MC → atomic DequeuePos+CAS; SC → plain size_t)

Queue families: TrinyxMPMCRing<T> — Multiple producers, multiple consumers TrinyxMPSCRing<T> — Multiple producers, single Consumer handle TrinyxSPMCRing<T> — Single producer, multiple consumers (future) TrinyxSPSCQueue<T> — Single producer, single consumer (future, no seq atomics)

Derived classes

template<typename T>
class TrinyxMPMCRing
template<typename T>
class TrinyxMPSCRing
template<typename T>
class TrinyxMPSCRing
template<typename T>
class TrinyxMPSCRing

Constructors, destructors, conversion operators

TrinyxRingBase() defaulted
TrinyxRingBase(const TrinyxRingBase&) deleted

Public functions

auto Capacity() const -> size_t
auto operator=(const TrinyxRingBase&) -> TrinyxRingBase& deleted

Protected types

struct Cell

Protected functions

auto InitStorage(size_t requestedCapacity) -> bool
Allocate and initialise the backing buffer. Capacity rounded to next power of 2.
void ShutdownStorage()
template<typename U>
auto MPEnqueue(U&& item) -> bool
Vyukov MP enqueue — CAS on EnqueuePos. Call from TryPush in MP-producer derived classes.
template<typename U>
auto SPEnqueue(U&& item) -> bool

Protected variables

std::atomic<size_t> EnqueuePos
Cell* Cells
size_t Mask

Function documentation

template<typename Derived, typename T> template<typename U>
bool TrinyxRingBase<Derived, T>::SPEnqueue(U&& item) protected

Vyukov SP enqueue — plain store on EnqueuePos (no CAS; only one producer). Call from TryPush in SP-producer derived classes.