chronon::sender::VersionedRegister
Lock-free ring buffer of (value, cycle) versions for lookahead-safe shared state. More...
#include <VersionedRegister.hpp>
Public Functions
| Name | |
|---|---|
| void | write(T value, uint64_t write_cycle) |
| void | reset(T value =T{}) |
| T | readLatest() const |
| T | read(uint64_t reader_cycle) const |
| VersionedRegister & | operator=(const VersionedRegister & other) |
| VersionedRegister & | operator=(VersionedRegister && ) =default |
| uint32_t | depth() const |
| VersionedRegister() | |
| VersionedRegister(T initial_value, uint32_t depth =kDefaultDepth) | |
| VersionedRegister() | |
| VersionedRegister(T initial_value) | |
| VersionedRegister(const VersionedRegister & other) | |
| VersionedRegister(VersionedRegister && ) =default |
Public Attributes
| Name | |
|---|---|
| uint32_t | kDefaultDepth |
Detailed Description
template <typename T ,
size_t HistoryDepth =0>
class chronon::sender::VersionedRegister;
Lock-free ring buffer of (value, cycle) versions for lookahead-safe shared state.
Template Parameters:
- T Value type.
- HistoryDepth Compile-time depth. 0 (default) selects the new runtime-depth API; any positive value selects the deprecated fixed-depth API.
In parallel lookahead execution, units advance at different simulation cycles. A reader at cycle N must not observe writes made at cycle N+K. write() appends; read(cycle) returns the newest version with write_cycle <= reader_cycle. Single-writer/multi-reader safe via acquire/release on write_head_; multiple writers require external serialization.
Preferred usage (runtime depth derived from the dependency graph):
auto depth = sim.dependencyGraph()
.requiredVersionedRegisterDepth(writer, readers, max_lookahead);
VersionedRegister<uint64_t> reg(initial_value, depth);
Legacy usage (compile-time depth, deprecated):
VersionedRegister<uint64_t, 16> reg(initial_value); // deprecated
Public Functions Documentation
function write
inline void write(
T value,
uint64_t write_cycle
)
function reset
inline void reset(
T value =T{}
)
function readLatest
inline T readLatest() const
function read
inline T read(
uint64_t reader_cycle
) const
function operator=
inline VersionedRegister & operator=(
const VersionedRegister & other
)
function operator=
VersionedRegister & operator=(
VersionedRegister &&
) =default
function depth
inline uint32_t depth() const
function VersionedRegister
inline VersionedRegister()
function VersionedRegister
inline VersionedRegister(
T initial_value,
uint32_t depth =kDefaultDepth
)
function VersionedRegister
inline VersionedRegister()
function VersionedRegister
inline explicit VersionedRegister(
T initial_value
)
function VersionedRegister
inline VersionedRegister(
const VersionedRegister & other
)
function VersionedRegister
VersionedRegister(
VersionedRegister &&
) =default
Public Attributes Documentation
variable kDefaultDepth
static uint32_t kDefaultDepth = 16;
Updated on 2026-07-06 at 09:03:33 +0000