Subject: Re: [boost] [lockfree::fifo] Review
From: Andy Venikov (avenikov_at_[hidden])
Date: 2009-12-11 10:06:52
Helge Bahmann wrote:
> On Fri, 11 Dec 2009, Tim Blechmann wrote:
>> by definition ll/sc are immune to aba problems
> This is NOT correct. The sequence of operations you would need to
> prevent ABA is:
> object *tmp=head.load_linked();
> object *next=tmp->next;
> This is however NOT possible because you are not allowed to make any
> memory access between ll and sc -- some CPUs (definitely older mips, but
> not ppc, unsure about many of the other architectures) clear the
> reservation on _any_ memory reference and will cause this sequence to
> always fail. Alpha has the fun requirement of a memory barrier before
> you are allowed to dereference "tmp", which just provides another way to
> kill your reservation.
PPC as well. 7447, for example, will invalidate the "reservation bit"
after writing to ANY memory location.
> ll/sc only prevents "pathological" ABA races as you cannot inpsect the
> object being replaced. Exposing an ll/sc interface to a higher-level
> language is therefore unlikely to result in something usable.
>> most cas-architectures provide dcas
> I think x86 is the rare exception, not the rule, so relying on DCAS
> excludes pretty much all 32-bit except for x86.
> Unsubscribe & other changes:
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk