Or get rid of pipelining and caches ... :-D

On Sun, 18 Nov 2018 at 23:21, Kodewerk <k...@kodewerk.com> wrote:

> This is all too confusing… can’t you just single thread everything?
>
> — Kirk
>
>
> On Nov 18, 2018, at 10:35 AM, Vladimir Sitnikov <
> sitnikov.vladi...@gmail.com> wrote:
>
> Jean-Philippe>is a write to value but no read of this value inside the
> same thread, so the write is free to be reordered
>
> It ("reordering") does not really matter.
>
> For instance,
>
> 17.4.5. Happens-before Order> If the reordering produces results
> consistent with a legal execution, it is not illegal.
>
> What matters is the set of possible "writes" that given "read" is allowed
> to observe.
>
>
> In this case, simple transitivity is enough to establish hb.
> As Gil highlights, "negations" are a bit hard to deal with, and Mr.Alexey
> converts the negations to a positive clauses:
> https://shipilev.net/blog/2014/jmm-pragmatics/#_happens_before
>
> Shipilёv> Therefore, in the absence of races, we can only see the latest
> write in HB.
>
> Note: we (as programmers) do not really care HOW the runtime and/or CPU
> would make that possible. We have guarantees from JVM that "in the absence
> of races, we can only see the latest write in HB".
> CPU can reorder things and/or execute multiple instructions in parallel. I
> don't really need to know the way it is implemented in order to prove that
> "CHM is fine to share objects across threads".
>
> Just in case: there are two writes for w.value field.
> "write1" is "the write of default value" which "synchronizes-with the
> first action in every thread" (see 17.4.4.) + "If an action x
> synchronizes-with a following action y, then we also have hb(x, y)." (see
> 17.4.5)
> "write2" is "w.value=42"
>
> "value=0" (write1) happens-before "w.value=42" (write2) by definition
> (17.4.4+17.4.5)
> w.value=42 happens-before map.put (program order implies happens-before)
> read of u.value happens-before map.put (CHM guarantees that)
>
> In other words, "w.value=42" is the latest write in hb order for u.value
> read, so u.value must observe 42.
> JRE must ensure that the only possible outcome for the program in question
> is 42.
>
> Vladimir
>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to mechanical-sympathy+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to mechanical-sympathy+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
-- 
Dr Heinz M. Kabutz (PhD CompSci)
Author of "The Java(tm) Specialists' Newsletter"
Sun/Oracle Java Champion
JavaOne Rockstar Speaker
http://www.javaspecialists.eu
Tel: +30 69 75 595 262
Skype: kabutz

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mechanical-sympathy+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to