Hi Tim,
On Tue, 15 Dec 2009, Tim Blechmann wrote:
you should add memory barriers, when reading or writing to the reader or
Actually, his implementation is similar to ringbuffer.c in
libjack... and assumes that reading and writing can happen
atomically (as was pointed out by someone else) -- which can
be managed with single reader / single writer
requirement.[a]
Unless I've misunderstood the code, ringbuffer.c is /not/
using special atomic operations.
writer indices ... my implementation (without size
limitation to a power
of two) can be found at [1]
[1]
http://tim.klingt.org/git?p=boost_lockfree.git;a=blob;f=boost/lockfree/ring…
This looks nice, too. Have you considered trying to give it
an interface like the existing boost::circular_buffer<T,Alloc>?
The distinguishing feature of your implementation is that is
lock-free... but it's otherwise the same concept (and
already in Boost).
Also, does yours have a single reader / single writer
requirement?
I tried to clone the git repos, but hit ^C when it was
20% and 40MB (!!). :-)
Peace,
Gabriel
[a] I'm talking over my head on this point, so
if I have misspoken, please be gentle! :-)