Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #11514

Re: Volatile happens before question

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail
From markspace <-@.>
Newsgroups comp.lang.java.programmer
Subject Re: Volatile happens before question
Date Thu, 19 Jan 2012 21:16:24 -0800
Organization A noiseless patient Spider
Lines 47
Message-ID <jfatbb$tuo$1@dont-email.me> (permalink)
References <09848313-2372-4c23-8f52-fa84c612c100@u32g2000yqe.googlegroups.com> <s96bklu5m72u.h0brrnp2d8fq$.dlg@40tude.net> <f8b028b6-9f5b-4838-bae3-9a1d1b0716d3@l1g2000vbc.googlegroups.com> <jf7239$k2b$1@dont-email.me> <726da9ce-57f4-4136-b50b-56a032aca196@f1g2000yqi.googlegroups.com> <jf78bd$s4v$1@dont-email.me> <652cb878-fb2f-4361-8f70-61bc493cebf6@r16g2000yqi.googlegroups.com> <jf7crq$p30$1@dont-email.me> <6280ea10-c656-40fa-ba3d-50f24d471978@j15g2000yqb.googlegroups.com> <jf7n1d$ojv$1@dont-email.me> <6b44805b-ff63-41ba-8060-cbd92164f9d6@o9g2000yqa.googlegroups.com> <jf9kid$vac$1@dont-email.me> <240ac224-9713-4931-89f6-aeb7578aee09@m11g2000yqe.googlegroups.com> <jf9o0f$kmr$1@dont-email.me> <5ff9ba43-a357-4c0b-9c26-0a90242884d5@m11g2000yqe.googlegroups.com> <jfa23r$o3p$1@dont-email.me> <ababef97-5d65-4295-9906-90f7f2311e61@k28g2000yqc.googlegroups.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Fri, 20 Jan 2012 05:16:27 +0000 (UTC)
Injection-Info mx04.eternal-september.org; posting-host="XjIWM99mD7Ijfdu600oVPA"; logging-data="30680"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/xqiDrio4RJ/8gYbEUtvwoHdzAtUD6JjA="
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0
In-Reply-To <ababef97-5d65-4295-9906-90f7f2311e61@k28g2000yqc.googlegroups.com>
Cancel-Lock sha1:qWjZxrOGezM+TloG3Am2APP9os8=
Xref x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:11514

Show key headers only | View raw


On 1/19/2012 4:14 PM, raphfrk@gmail.com wrote:
> On Jan 19, 9:31 pm, markspace<-@.>  wrote:
>> I'm pretty sure that's the exact opposite of what is allowed.  Remember
>> that AtomicInteger::increment() is documented to have the same semantics
>> as both reading and writing a volatile.  I.e., from the perspective of a
>> given execution order, the write from increment() is guaranteed to
>> happen first.  Writes and reads may not be reordered around it.  I don't
>> think write are allowed to be interleaved with other writes this way.
>
> However, that only applies to volatile read/writes themselves, I
> think.
>
> There has to be a happens-before chain from W-write to R-read, in the
> example.  Otherwise, you can't say they happen separately.


No, and this is where a lot of folks mess up.  For locks (monitors), 
volatile variables, and other syncrhonization actions, there's 
specifically a transitive relationship. ALL writes prior to a 
synchronization action happen-before all subsequent reads.

So if you do this:

   int a = 1;
   int b = 2;
   int volatile v = 3;

Then a, b, and v all synchronize "together" and code like this:

   x = v;
   y = b;
   z = a;

Reads correctly when the read of v happens after the write of v.  (Note 
I'm specifically ignoring the case where the read of v does NOT happen 
after the write of v.  I think everyone agrees all bets are off in that 
case.)

What you did was a little different.

   y = b;
   x = v;

This can't synchronize, because even when the read of v does come after 
the write of v, b is still read before that, so it's value is really 
free to be anything.

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-17 04:04 -0800
  Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-17 08:17 -0800
    Re: Volatile happens before question markspace <-@.> - 2012-01-17 08:50 -0800
      Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-17 09:00 -0800
    Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-17 08:54 -0800
      Re: Volatile happens before question markspace <-@.> - 2012-01-17 11:24 -0800
    Re: Volatile happens before question Patricia Shanahan <pats@acm.org> - 2012-01-17 14:49 -0800
      Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-17 15:49 -0800
      Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-17 17:14 -0800
        Re: Volatile happens before question Patricia Shanahan <pats@acm.org> - 2012-01-17 18:17 -0800
          Re: Volatile happens before question Joshua Maurice <joshuamaurice@gmail.com> - 2012-01-19 16:45 -0800
  Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-17 08:18 -0800
    Re: Volatile happens before question markspace <-@.> - 2012-01-17 08:33 -0800
      Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-17 08:49 -0800
        Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-17 09:21 -0800
          Re: Volatile happens before question markspace <-@.> - 2012-01-17 10:10 -0800
            Re: Volatile happens before question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-01-17 10:28 -0800
              Re: Volatile happens before question markspace <-@.> - 2012-01-17 10:41 -0800
                Re: Volatile happens before question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-01-17 11:06 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-17 12:09 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-17 12:12 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-17 12:38 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-17 13:35 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-17 14:41 -0800
                Re: Volatile happens before question Patricia Shanahan <pats@acm.org> - 2012-01-17 14:55 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-17 15:27 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-17 17:37 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-17 17:42 -0800
            Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-17 15:46 -0800
              Re: Volatile happens before question markspace <-@.> - 2012-01-17 16:14 -0800
                Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-17 20:01 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-17 20:37 -0800
                Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-17 21:52 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-17 23:47 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-18 00:08 -0800
                Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-18 09:04 -0800
                Re: Volatile happens before question Steven Simpson <ss@domain.invalid> - 2012-01-18 11:22 +0000
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-18 06:24 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-18 07:32 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-18 08:34 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-18 10:12 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-18 11:15 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-18 11:59 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-18 12:24 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-18 13:16 -0800
                Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-18 15:00 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-18 16:12 -0800
                Re: Volatile happens before question Patricia Shanahan <pats@acm.org> - 2012-01-18 16:34 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-18 17:17 -0800
                Re: Volatile happens before question Patricia Shanahan <pats@acm.org> - 2012-01-18 19:03 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-18 15:30 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-18 16:10 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-19 08:18 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-19 09:40 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-19 10:10 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-19 10:39 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-19 12:13 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-19 13:31 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-19 16:14 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-19 21:16 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-20 03:23 -0800
                Re: Volatile happens before question "raphfrk@gmail.com" <raphfrk@gmail.com> - 2012-01-20 06:46 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-20 08:56 -0800
                Re: Volatile happens before question Lew <noone@lewscanon.com> - 2012-01-20 11:12 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-18 17:06 -0800
                Re: Volatile happens before question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-01-19 12:46 -0800
                Re: Volatile happens before question markspace <-@.> - 2012-01-19 13:38 -0800
                Re: Volatile happens before question Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-01-18 07:32 -0800
                Re: Volatile happens before question Lew <noone@lewscanon.com> - 2012-01-18 00:06 -0800
                Re: Volatile happens before question Knute Johnson <nospam@knutejohnson.com> - 2012-01-18 09:23 -0800
                Re: Volatile happens before question Joshua Maurice <joshuamaurice@gmail.com> - 2012-01-19 17:07 -0800
                Re: Volatile happens before question Joshua Maurice <joshuamaurice@gmail.com> - 2012-01-19 17:12 -0800
                Re: Volatile happens before question Joshua Maurice <joshuamaurice@gmail.com> - 2012-01-19 19:22 -0800
  Re: Volatile happens before question Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-01-17 10:24 -0800

csiph-web