What exactly shared means?
Peter Alexander via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jan 2 16:48:22 PST 2015
On Friday, 2 January 2015 at 23:51:05 UTC, John Colvin wrote:
> The rule (in C(++) at least) is that all data is assumed to be
> visible and mutable from multiple other threads unless proved
> otherwise. However, given that you do not write a race, the
> compiler will provide full sequential consistency. If you do
> write a race though, all bets are off.
The memory is visible and mutable, but that's pretty much the
only guarantee you get. Without synchronization, there's no
guarantee a write made by thread A will ever be seen by thread B,
and vice versa.
Analogously in D, if a thread modifies a __gshared variable,
there's no guarantees another thread will ever see that
modification. The variable isn't thread local, but it's almost as
if the compiler to treat it that way.
These relaxed guarantees allow the compiler to keep variables in
registers, and re-order memory writes. These optimizations are
crucial to performance.
More information about the Digitalmars-d-learn
mailing list