What exactly shared means?

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jan 3 05:33:19 PST 2015


On Saturday, 3 January 2015 at 12:17:52 UTC, ketmar via 
Digitalmars-d-learn wrote:
> why should it? thread locals are... well, local for each 
> thread. you
> can't access local of different thread without resorting to 
> low-level
> assembly and OS dependent tricks.

Of course you can, anything that is reachable through any chain 
of pointers/references is effectively "shared", not only the 
object you explicitly "share".

So when you cast away "shared" then call a function and that is 
safe in itself, you don't know what happens when someone modifies 
some function deep down in the call chain later on and access 
some private pointer chain and possibly retain a pointer to it.

The alternative is to put "shared" on all parameters in libraries 
or avoid using libraries...


More information about the Digitalmars-d-learn mailing list