shared - i need it to be useful

Steven Schveighoffer schveiguy at gmail.com
Thu Oct 18 19:13:53 UTC 2018


On 10/18/18 2:59 PM, Manu wrote:
> On Thu, Oct 18, 2018 at 7:20 AM Steven Schveighoffer via Digitalmars-d
> <digitalmars-d at puremagic.com> wrote:
>>
>> On 10/18/18 10:11 AM, Simen Kjærås wrote:
>>>       a.increment(); // unsafe, non-shared method call
>>> }
>>>
>>> When a.increment() is being called, you have no idea if anyone else is
>>> using the shared interface.
>>
>> I do, because unless you have cast the type to shared, I'm certain there
>> is only thread-local aliasing to it.
> 
> No, you can never be sure. Your assumption depends on the *user*
> engaging in an unsafe operation (the cast), and correctly perform a
> conventional act; they must correctly the safely transfer ownership.

Not at all. No transfer of ownership is needed, no cast is needed. If 
you want to share something declare it shared.

> My proposal puts all requirements on the author, not the user. I think
> this is a much more trustworthy relationship, and in terms of
> cognitive load, author:users is a 1:many relationship, and I place the
> load on the '1', not the 'many.

Sure, but we can create a system today where smart people make objects 
that do the right thing without compiler help. We don't need to break 
the guarantees of shared to do it.

-Steve


More information about the Digitalmars-d mailing list