Skip to main content

chronon::sender::MultiProducerQueueAdapter::SharedFifoState

More...

Public Functions

Name
voidpush(T & data, uint64_t arrive_cycle)
boolfull() const
std::optional< uint64_t >frontArrival() const
boolempty() const
template <typename Visitor >
bool
consume(uint64_t current_cycle, Visitor && visitor)
voidclear()
boolcanAdmitAt(uint64_t cycle) const
boolcanAdmit() const
voidbeginCycle(uint64_t cycle)
size_tavailable() const
SharedFifoState(size_t logical_capacity)

Public Attributes

Name
size_tsize
const size_tring_mask
const size_tring_capacity
const size_tlogical_capacity
size_thigh_water
uint64_thead_ticket
std::vector< SharedEntry >entries
size_tadmitted_this_cycle
uint64_tadmission_cycle

Detailed Description

struct chronon::sender::MultiProducerQueueAdapter::SharedFifoState;

Receiver-only bounded destination FIFO.

The object is separately allocated and cache-line aligned so producer access to the lane table and signal words never shares a cache line with the receiver's head/size/admission counters. Storage is allocated once at configuration time and uses a power-of-two ring; no receive allocates.

Public Functions Documentation

function push

inline void push(
T & data,
uint64_t arrive_cycle
)

function full

inline bool full() const

function frontArrival

inline std::optional< uint64_t > frontArrival() const

function empty

inline bool empty() const

function consume

template <typename Visitor >
inline bool consume(
uint64_t current_cycle,
Visitor && visitor
)

function clear

inline void clear()

function canAdmitAt

inline bool canAdmitAt(
uint64_t cycle
) const

function canAdmit

inline bool canAdmit() const

function beginCycle

inline void beginCycle(
uint64_t cycle
)

function available

inline size_t available() const

function SharedFifoState

inline explicit SharedFifoState(
size_t logical_capacity
)

Public Attributes Documentation

variable size

size_t size = 0;

variable ring_mask

const size_t ring_mask;

variable ring_capacity

const size_t ring_capacity;

variable logical_capacity

const size_t logical_capacity;

variable high_water

size_t high_water = 0;

variable head_ticket

uint64_t head_ticket = 0;

variable entries

std::vector< SharedEntry > entries;

variable admitted_this_cycle

size_t admitted_this_cycle = 0;

variable admission_cycle

uint64_t admission_cycle = std::numeric_limits<uint64_t>::max();

Updated on 2026-07-18 at 12:27:27 +0000