upvote
If it's a power of two, you don't need the branch at all. Let the unsigned index wrap.
reply
You ultimately need a mask to access the correct slot in the ring. But it's true that you can leave unmasked values in your reader/writer indices.
reply
Interesting, I've never heard about anybody using this. Maybe a bit unreadable? But yeah, should work :)
reply
Indeed that's true. That extra constraint enables further optimization

It's mentioned in the post, but worth reiterating!

reply
This was, in fact, mentioned in the article.
reply