On Fri, Apr 04, 2003 at 07:48:20 -0500, Paul Davis wrote: > there is one aspect of the LFRB that bothers me. as has been explained > many times, the monotonic motion of the read/write pointers is > key. but when one the reader/writer moves the pointer to the end of > the buffer and wraps it around, that operation does not cause > monotonic motion (its semantically monotonic, but in fact the pointer > value goes from high to low). i've never quite satisfied myself that > this is threadsafe.
I think its fine because the addressing technique of the ringbuffer is that the address is evaluated by masking the pointer offset number, and this is true for every access (tecnically speaking, obviously you dont always have to perform the mask). The behaviour is also correct if you address backwards (as in a FIR filters ringbuffer, ie. back in time). Of course this is only true if the buffer is power-of-two sized. - Steve
