Double checked locking and GCJ?

Andrew Haley aph@redhat.com
Tue Jun 28 10:35:00 GMT 2005


Martin Egholm Nielsen writes:
 > Hi there,
 > 
 > Sorry for bringing up what may be the most tedious thread ever. But does 
 > "double checked locking" work with GCJ:
 > 
 > // Works with acquire/release semantics for volatile
 > // Broken under current semantics for volatile
 > class Foo {
 > private volatile Helper helper = null;
 > public Helper getHelper() {
 > if (helper == null) {
 > synchronized(this) {
 > if (helper == null)
 > helper = new Helper();
 > }
 > }
 > return helper;
 > }
 > }
 > 
 > (From: 
 > http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html)
I think it depends on the memory model of the particular hardware on
which the program is executing. For it to be otherwise, every access
to a volatile would require a full memory barrier, and I don't think
we do that.
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /