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