getting next write position reserves slots before checking if the queue is full. could lead to 'holes' if a writer fails after incrementing but before writing
here:
let write_pos = header.write_idx.fetch_add(1, Ordering::AcqRel);
let slot_idx = write_pos % self.slot_count as u64;
could probably use a 2 phase commit (reservation/completion)
getting next write position reserves slots before checking if the queue is full. could lead to 'holes' if a writer fails after incrementing but before writing
here:
could probably use a 2 phase commit (reservation/completion)