Hi all,
I'm still new to this mailing-list and I'm sure someone's asked about similar
questions before, but it's hard to find documented materials related to this
topic: does the current stable version of Mono (namely 1.2.5.1) conform to the
ECMA standard of memory model, which is a weak model, or does it conform to the
stronger one as used by MS .Net Framework 2.0 or later? Is it different on
various implementations of Mono, such that the ones on IA64 are not using the
stronger model?
I'd also like to know, there was a hint that MS is trying to revise the ECMA
CLI standard so that a stronger memory gets employed, does anybody know how's
that in progress?
Anyway, just to be sure I got the concepts right, please correct me if I got
the Mono/CLR memory model wrong:
1. No reorder can happen if there's a MemoryBarrier (as given by Interlocked or
Thread.VolatileRead/Write) or volatile variable in between in a method; or if
reorder happened, it's invisible to programmers (given that reads and writes
cannot move before a volatile read, and reads and writes cannot move after a
volatile write)
2. Monitor.Enter has aquire semantics, Monitor.Exit has release semantics, does
that mean that before entering a critical section, everything in the thread's
own copy of memory (if the memory is cached) gets synchronized with the latest
values in the main memory, and after leaving a critical section, all changes
done by the current thread will be flushed out to the main memory?
3. Does a volatile read behave just like a Monitor.Enter in terms of having
aquire semantics, that everything in the thread's own copy of memory (and not
just the volatile variable itself) gets synchronized with the latest values in
the main memory, and vice versa?
4. What's the cost of using a volatile variable in comparison to using locks in
Mono? Should I expect less overhead with a volatile variable rather than with
locks, if all accesses to it must not be reordered?
5. What are the major differences between a Mono/CLR memory model and the Java
memory model (after Java 5) that I should care about?Greetings,- RednaxelaFX
_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces.
It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
_______________________________________________
Mono-list maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list