Something needs to happen with shared, and soon.
Jason House
jason.james.house at gmail.com
Sat Nov 17 05:49:02 PST 2012
On Thursday, 15 November 2012 at 16:31:43 UTC, Sean Kelly wrote:
> On Nov 11, 2012, at 6:30 PM, Walter Bright
> <newshound2 at digitalmars.com> wrote:
>>
>> To make a shared type work in an algorithm, you have to:
>>
>> 1. ensure single threaded access by aquiring a mutex
>> 2. cast away shared
>> 3. operate on the data
>> 4. cast back to shared
>> 5. release the mutex
>
>
> So what happens if you pass a reference to the now non-shared
> object to a function that caches a local reference to it? Half
> the point of the attribute is to protect us from accidents like
> this.
The constructive thing to do may be to try and figure out what
should users be allowed to do with locked shared data... I think
the basic idea is that no references can be escaped; SafeD rules
could probably help with that. Non-shared member functions might
also need to be tagged with their ability to be called on locked,
shared data.
More information about the Digitalmars-d
mailing list