[Mono-list] Class library developers: locking issues to keep in mind

Miguel de Icaza miguel@ximian.com
29 Oct 2001 11:56:21 -0500


On Sun, 2001-10-28 at 16:43, Alexander Klyubin wrote:
> Hm... As far as I remember how volatile works in Java, even making 
> reference volatile does not save you from the situation when the 
> reference is OK, but the object it points to has not been completely 
> initialized from point of view of a thread where some code accesses the 
> object using this reference... But I'm not 100% sure on this.

I think we are now talking about wildly different things here :-)

The problem was the double check, and the fact that a thread in a
different CPU might have assigned a value to the variable on a separate
thread, but the change is living in the other cpu's cache.

All of this is happening inside a *lock* statement.

So conceptually:

	lock (typeof (this)){
		if (val != 0)
			return;
		val = 1;
        }

The problem still exists there with integers.  

Migue