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

Vitaly Davidovich vitalyd at gmail.com
Thu Jan 19 16:42:13 EST 2012


Failed cas won't write anything to cache (afterall you didn't modify
anything).  However, it does achieve same memory fencing/ordering as a
successful cas.  On x86/64 that's because the cmpxchg instruction is
prefixed with LOCK, which by itself makes the instruction serializing
irrespective of whether the cmpxchg succeeds.

Also, small addendum - processor doesn't always issue a RFO (request for
ownership) before writing - if the cache line is in exclusive state in the
writing processor, it doesn't need to do that.

Also Doug Lea has a version of seqlock in his CVS repo for jsr166e - you
can take a look at it for details.  I'll tell you that there is no funny
business there with dummy cas operations - he trusts volatile reads :).

Sent from my phone
On Jan 19, 2012 4:05 PM, "Ruslan Cheremin" <cheremin at gmail.com> wrote:

> I think, it depends on what you name "write". Failed CAS will be "like
> write" in sense of cache coherence traffic -- at least AFAIK -- it
> will request cache line to be in M state (read-for-update), so if
> cache line was in some other core's cache -- it will be invalidated.
> But failed CAS does not really update cache line value, so it seems
> like writeback to main memory not needed. I do not know, does current
> CPUs actually optimize this writeback.
>
> 2012/1/20 Raph Frank <raphfrk at gmail.com>:
> > On Thu, Jan 19, 2012 at 8:48 PM, Ruslan Cheremin <cheremin at gmail.com>
> wrote:
> >> current == value you've just read by .get() few lines ago.
> >
> > Ahh, right.
> >
> > For references, would .compareAndSet(null, null), also add in the
> syncing?
> >
> > Does a compare and set that fails to update count as a write, or just a
> read?
> > _______________________________________________
> > Concurrency-interest mailing list
> > Concurrency-interest at cs.oswego.edu
> > http://cs.oswego.edu/mailman/listinfo/concurrency-interest
> _______________________________________________
> 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/20120119/e2b0bf33/attachment.html>


More information about the Concurrency-interest mailing list