[concurrency-interest] Suggestion: .hardGet() for atomicvariables

Vitaly Davidovich vitalyd at gmail.com
Fri Jan 20 22:45:43 EST 2012


MOV + compiler barrier wouldn't be the right transformation on x86 because
that wouldn't be the same thing as a volatile write (I.e. store-load
fence), it would be analogous to just store-store.  I think a cas(x, x)
instead of getAndAdd(0) would work and makes sense, although I wonder if
compilers care about such special cases - the cas will already possibly
incur a perf penalty so the extra add instruction is probably insignificant
to optimize.

Vitaly

Sent from my phone
On Jan 20, 2012 8:37 PM, "Boehm, Hans" <hans.boehm at hp.com> wrote:

> > From: Raph Frank [mailto:raphfrk at gmail.com]
> >
> > Thanks for the info.
> >
> > On Fri, Jan 20, 2012 at 11:10 AM, Ruslan Cheremin <cheremin at gmail.com>
> > wrote:
> > > long seq = sequence.get();
> > > ...some reading...
> > > if( !sequence.CAS(seq, seq) ){
> > >   //...approach failed -> retry
> > > }
> > >
> > > So, from my point of view, if CAS failed -- we shouldn't actually
> > care
> > > about it's ordering semantic (although it was interesting to know --
> > > thanks, David -- what ordering does not depend on success/fail). If
> > > CAS succeeded -- it does required guarantee anyway. Am I wrong
> > > somewhere here?
> >
> > Ahh right, that is better than
> >
> > if (sequence.getAndAdd(0) != seq) {
> >   <retry>
> > }
> >
> > Anyway, thanks all for the info.
>
> Thanks for the corrections and clarifications.  It does look like we
> should essentially view CAS as always performing a volatile store, possibly
> of the original value.
>
> It seems to me that the trade-off between CAS and getAndAdd here is highly
> implementation dependent.  Clearly if getAndAdd(0) is implemented in terms
> of CAS(x,x), CAS is faster.  I suspect either could in theory be optimized
> to a plain old MOV + compiler constraints on x86.
>
> Hans
>
>
>
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20120120/1eee4163/attachment.html>


More information about the Concurrency-interest mailing list