[cpp-threads] modes, pass 2

Peter Dimov pdimov at mmltd.net
Sun May 8 16:33:25 BST 2005


Doug Lea wrote:
>> I don't understand fallible_*,
>
> It means that CAS can return false just because it feels like it.
> Like LL/SC does on all platforms I know that use it.

If an implementation gives me fallible CAS when I ask for infallible CAS, 
how can I tell? And even if I could tell, why would I want to?

>> and I don't understand *_ordered. Sorry. :-)
>
> Actually, I think you don't understand the sense of "release". Sorry.
> It's the main reason I apologized for crummy names.
> Here, release is intended to ensure that read-after-write
> works, which entails a heavy storeLoad barrier.

I still don't understand the precise meaning of "release" and "ordered". 
What reorderings do these prevent? (Preceding | subsequent) (ordinary | 
atomic on any variable | atomic on the same variable) (reads | writes)?

(The usual "release" prevents reordering of preceding *.) 





More information about the cpp-threads mailing list