Re: Native version of VolatileRead and VolatileWrite

Peter Ritchie <[email protected]> Fri, 14 Dec 2007 00:36:47 -0500
Newsgroups gmane.comp.windows.devel.dotnet.cx
Message-ID <LISTSERV%[email protected]>
That's sscli, not the .NET BCL.  I think they have different memory models.

My guess is the MemoryBarrier was placed between "int ret = address"
and "return ret" to ensure the two instructions aren't reordered with
respect to each other.

One problem I see with that is that the read from "address" may not see
writes from other threads.

As Vance Morrision describes the .NET 2.0 memory model [1] "reads can only
move earlier in time, but never past a write", and "a write cannot move
past a read from the same thread to the same location"; it seems, at least
in .NET 2.0, there could be no reordering with respect to each other.

[1] http://msdn.microsoft.com/msdnmag/issues/05/10/MemoryModels/#S5

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com