Comment

Comment by JonChesterfield

Push:

buffer_[head] = value;

head_.store(next_head, std::memory_order_release);

return true;

There's no relationship between the two written variables. Stores to the two are independent and can be reordered. The aq/rel applies to the index, not to the unrelated non-atomic buffer located near the index.

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton