This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Double checked locking and GCJ?


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]