[concurrency-interest] Can a volatile read be reordered before a lazySet?

Oleksandr Otenko oleksandr.otenko at oracle.com
Wed Dec 31 09:45:29 EST 2014


Not sure why you say (3). Since lazySet is not part of JMM, I am only 
assuming it is pretty much like an ordered store on x86.

In the presence of write buffers the loop may spin indefinitely, yet the 
lazy-stored write won't become visible to the pong thread - there'd be 
nothing to cause the buffers of the ping thread to flush. So ping 
effectively will appear to perform all the loads of the indefinite loop 
ahead of the store.

In reality the only event that would cause the write buffers to flush, 
is the thread preemption.


Alex


On 31/12/2014 07:20, Nitsan Wakart wrote:
> Re-read the Shipilev "JMM Pragmatics" reference again last night, and 
> discussed with Gil. I think that cup of coffee was nowhere near enough 
> :-). In particular:
> "If IUC this means stores and volatile loads are conservatively not 
> reordered" is FALSE because the premise "IUC" is false. I did not 
> understand correctly which leads me to amend my comment:
> 1. There's technically nothing to stop reordering between the store 
> and load.
> >theLong.lazySet(1L);
> >Object o = theRef.get();
> 2. There's technically nothing to stop reordering between the store 
> and load.
> >  long l = theLong.get() + 1; // LOADLOAD
> >theLong.lazySet(l); //STORESTORE
> >Object o = theRef.get(); // LOADLOAD
> 3. I still think the while loop presents a different case to normal 
> flow. So for now I still hold that the lazySet cannot be moved after 
> the while loop.
>
> My sincere apologies for the confusion.
> Happy holidays to all.
>
>
> _______________________________________________
> 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/20141231/68da4b8b/attachment.html>


More information about the Concurrency-interest mailing list