Re: JavaMemoryModel: javaworld on double-check

From: Bill Pugh (pugh@cs.umd.edu)
Date: Mon Feb 12 2001 - 13:18:09 EST


At 9:53 AM -0800 2/12/01, Clifford Click wrote:
>Doug Lea wrote:
>
>> See
>> "Double-checked locking: Clever, but broken"
>> http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-double.html
>>
>> -Doug
>> -------------------------------
>> JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
>
>Yeah! A little more sanity in the world!
>
>Now on to my real reason for posting. I'm busy trying to make HotSpot
>safe for the new JMM and I'm staring at how we do synchronization. We
>use a CAS-style instruction on both Sparc and Intel; both are atomic
>unto themselves but neither make any multi-cpu guarentees. Do I need
>a multi-cpu guarentee at locks and unlocks? (assuming Sparc TSO and
>whatever passes for standard on multi-cpu intels). I afraid of what the
>performance hit will be when I insert a MEMBAR at each lock and unlock!

I looked at this previously.

By my understanding, unuder TSO, a CAS counts as a Read atomically
followed by a Write. None of the earlier memory references can be
reordered with the CAS-write, and none of the following memory
references can be reordered with the CAS-read.

So a CAS should act as a memory barrier, but we should get a Sparc
architect to verify this for us.

Intel IA-32 doesn't have a memory model (don't get me started on the
idiocy of a the major processor in use not having a memory model).
Each specific system built using IA-32 chips and other system chips
is allowed to have its own memory model.

I will try to work my contacts at Intel to see if I can't get some
more information.

        Bill



This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:30 EDT