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.