Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #11468
| From | Knute Johnson <nospam@knutejohnson.com> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Volatile happens before question |
| Date | 2012-01-18 09:04 -0800 |
| Organization | A noiseless patient Spider |
| Message-ID | <jf6u2a$rj8$1@dont-email.me> (permalink) |
| References | (8 earlier) <jf5g64$uga$1@dont-email.me> <k0j9x3nt2or.70vxbwtikmz$.dlg@40tude.net> <jf5mm0$ndt$1@dont-email.me> <1pi7kea3zdo0b.1ixhuq3p9ybbu$.dlg@40tude.net> <ztygnshgmyhi$.19t44om95xdpy.dlg@40tude.net> |
On 1/18/2012 12:08 AM, Peter Duniho wrote: > On Tue, 17 Jan 2012 23:47:38 -0800, Peter Duniho wrote: > >> [...] >> If we have two actions x and y, we write hb(x, y) to indicate >> that x happens-before y. >> >> * If an action x synchronizes-with a following action y, then >> we also have hb(x, y). >> * If hb(x, y) and hb(y, z), then hb(x, z). >> >> Tells us that any program statement _before_ "a = true" must >> "happen-before" any program statement _after_ "if (!a)". Notably it, this >> part at least, does not tell us anything about statements that come after >> "a = true" in thread #1, nor statements that come before "if (!a)" in >> thread #2. > > Sorry, I seem to be making a habit of leaving out important clarification > lately. To wit: in the above, I am assuming that the statement "a = true" > actually does execute before the statement "if (!a)". Obviously, that > doesn't have to happen...thread #2 could complete before thread #1 ever > executes, or any variation on that theme. But the scenario the > specification addresses is when that does happen. > > If program statement "if (!a)" occurs before "a = true", then the > specification doesn't tell us anything specific about the other statements > around those statements. Thus my interpretation that allows "bStore" to > wind up with the value of 1 even if the statement "if (!a)" observes "a" as > having the value of "false" instead of "true". > > Pete Pete: I woke up in the middle of the night thinking about this again :-). I made some assumptions that I'm not sure you did and that was that a and b were safely published in thread 1 before the ... and that execution of both threads started at that point (probably not a good assumption but that was it). If that were not the case then b is up for grabs until a is read in thread 2. The other question, can b = 1 be reordered before the a = true as seen by thread 2, I'm not really sure. I am sure that once a is read in thread 2 b must again be 0 whether it was reordered or not. That is the one guarantee of volatile that the memory model will be up to date for all writes to all variables written before the write to the volatile is subsequently read in the other thread. So I think that my original answer to the OP is not correct. I'm not sure how to answer the reordering question. As best I can read the JLS there is no special case for thread with volatile assignments other than a read following a write. I did find a good quote for the day however, "Don't rely on clever reasoning about why you don't need to synchronize", Brian Goetz. -- Knute Johnson
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll 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