Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #10691
| From | Robert Klemme <shortcutter@googlemail.com> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Volatile keyword |
| Date | 2011-12-13 08:37 +0100 |
| Message-ID | <9kodm9FfqrU1@mid.individual.net> (permalink) |
| References | <41fa02ff-3f20-41bc-90d9-c3f7d3651fbf@n6g2000vbg.googlegroups.com> <jc5ffc$28s$1@dont-email.me> <ddkce71iqujhrsrslsca33a5nep023c4si@4ax.com> |
On 12.12.2011 20:15, Roedy Green wrote: > On Mon, 12 Dec 2011 10:00:09 -0800, markspace<-@.> wrote, quoted or > indirectly quoted someone who said : > >> I don't like the word "lock" here because it implies something that >> probably isn't happening. I think that volatile, even for long and >> double, is specified to be much lighter weight than a lock. Right, there is no lock, just a memory barrier. > In a 64-bit java, there is nothing to do. 64-bit reads are atomic > because the hardware is atomic. I would be unsure whether that can be generalized. I can imagine a 64 bit system which externally uses 32 bit - even though that this would not be very likely these days. But in the past there have been 32 bit processors with 16 bit data bus. So you would need two write operations on the bus. And in a SMP scenario these need not be atomic. Again, not very likely but possible. Bottom line is that the JVM spec does not make any guarantees here (ยง17.7 see Lew's reference). > In 32 bit, there is an assembler instruction cmpxchg8b designed to let > you implement a light weight atomic 64-bit read. Since you do not know on what JVM your Java program will run when you write it (or at least someone can choose to use a different JVM model) it is safer to code under the assumption that a long and double write is two operations i.e. not atomic. To remedy that there is AtomicLong. For double handling see the end of the JavaDoc at http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/atomic/package-summary.html Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Volatile keyword "raphfrk@gmail.com" <raphfrk@gmail.com> - 2011-12-12 04:51 -0800
Re: Volatile keyword Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-12-12 14:31 +0000
Re: Volatile keyword "raphfrk@gmail.com" <raphfrk@gmail.com> - 2011-12-12 06:52 -0800
Re: Volatile keyword Lew <lewbloch@gmail.com> - 2011-12-12 06:34 -0800
Re: Volatile keyword markspace <-@.> - 2011-12-12 10:00 -0800
Re: Volatile keyword Tom Anderson <twic@urchin.earth.li> - 2011-12-12 18:41 +0000
Re: Volatile keyword Patricia Shanahan <pats@acm.org> - 2011-12-12 11:43 -0800
Re: Volatile keyword Roedy Green <see_website@mindprod.com.invalid> - 2011-12-12 11:15 -0800
Re: Volatile keyword Robert Klemme <shortcutter@googlemail.com> - 2011-12-13 08:37 +0100
Re: Volatile keyword Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-12-12 23:54 -0800
Re: Volatile keyword Robert Klemme <shortcutter@googlemail.com> - 2011-12-14 19:39 +0100
Re: Volatile keyword Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-12-14 10:59 -0800
Re: Volatile keyword Patricia Shanahan <pats@acm.org> - 2011-12-14 11:00 -0800
Re: Volatile keyword Robert Klemme <shortcutter@googlemail.com> - 2011-12-14 22:35 +0100
Re: Volatile keyword Roedy Green <see_website@mindprod.com.invalid> - 2011-12-12 10:55 -0800
csiph-web