On Mon, 10 Jun 2013 15:46:27 -0400, Jonathan M Davis <jmdavisp...@gmx.com>
wrote:
On Monday, June 10, 2013 13:23:26 Steven Schveighoffer wrote:
shared was supposed to infer memory barriers, but AFAIK, it doesn't do
that. Not sure it ever will.
I believe that things are definitely leaning towards shared not adding
memory
barriers. There _might_ be something that happens with shared that
relates to
the GC in order to be able to facilitate per-thread collection, but at
this
point, I think that it's looking like shared will be almost like const
in that
it's a compile-time only thing enforced by the type system but has no
effect at
runtime (the main difference being that objects created as shared will
be in
shared memory rather than being thread-local - which _would_ be a
difference at
runtime - but aside from that, there may be no difference between shared
and
non-shared at runtime).
Well, I think this should be clarified as "the compiler won't generate
special runtime code." Given that shared is a type modifier, run time can
already take advantage of knowing whether something is shared or not.
For example, appending to unshared arrays avoids taking the GC lock if it
can append in place.
-Steve