[concurrency-interest] AtomicReference weakCompareAndSet
"Mayfailspuriously"?
David Holmes
dcholmes at optusnet.com.au
Sun May 21 18:36:02 EDT 2006
Bill Pugh writes:
> I would explain this differently (actually, the JMM requires that
> it be explained differently):
>
> weakCompareAndSet has volatile semantics, _except_ that it doesn't
> create any happens-before edges.
But isn't the existence of those edges the only thing that distinguishes
volatile semantics from non-volatile (barring the 64-bit atomicity issue)?
> So, here is the question we should discuss:
>
> **********
>
> Should weakCompareAndSet on an AtomicReference create happens
> before edges (just as compareAndSwap does)?
>
> **********
For consistency I'd say no. Arguably AtomicReference.weakCompareAndSet was a
mistake and should be deprecated. But one-in all-in.
We probably need to migrate the details from the package docs into the
actual method docs.
To address Cliff's problem I think the best solution is to add a
WeakAtomicInteger class that has no volatile semantics at all. I wonder
whether the JMX implementation would benefit from using such a class?
David
More information about the Concurrency-interest
mailing list