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...