Semantics of shared
jason.james.house at gmail.com
Thu May 14 10:52:37 PDT 2009
Walter Bright Wrote:
> Matt wrote:
> Shared data becomes unshared for the duration of a lock on it.
Is that a statement of fact? Or is it just speculation leading to the issues below? Even if this was changed to "scope unshared", that still is really hairy since scope is a storage class.
> The problem with this is:
> 1. determining that there are no other shared references into that data.
> 2. determining that the code operating on that data doesn't squirrel
> away a thread local reference to it.
> Currently, Bartosz is working on these problems. There is no solution
> yet other than using an (unsafe) cast and relying on the user not to
> screw it up.
His last blog implied he was further. I thought the recent shift to use TLS and shared inside dmd was because a design had been worked out. Without that, D hardly helps writing correct multi-threaded code :( It may be that I'm being overly pessimistic...
> >> Can you imagine two threads trying to sort the same array?
> > Not at the same time, but yes.
> That's why there's no way one would do this with simply shared data.
> Locks would be needed, too.
More information about the Digitalmars-d