Re:I've been writing ring buffers wrong all these years
by Guvante on Wednesday December 14, 2016 @03:00PM
(#13179153)
You could also just restrict the pointers in the normal way but to two times the size of the buffer. So instead of wrapping at N you wrap at 2*N.
You are only encoding 1 bit of data (first or second) so adding more data than that by allowing unsigned integer overflow is just an optimization, not fundamentally necessary.
Re:I've been writing ring buffers wrong all these years
by mark-r on Wednesday December 14, 2016 @03:31PM
(#13179382)
If you do that then the size() function becomes a problem. The original implementation relies on unsigned integer wrap-around to give the proper result when write < read.
You are only encoding 1 bit of data (first or second) so adding more data than that by allowing unsigned integer overflow is just an optimization, not fundamentally necessary.