shared - i need it to be useful

Stanislav Blinov stanislav.blinov at gmail.com
Fri Oct 19 00:29:49 UTC 2018


On Thursday, 18 October 2018 at 23:47:56 UTC, Timon Gehr wrote:

> I'm pretty sure you will have to allow operations on shared 
> local variables. Otherwise, how are you ever going to use a 
> shared(C)? You can't even call a shared method on it because it 
> involves reading the reference.

Because you can't really "share" C (e.g. by value). You share a 
C*, or, rather a shared(C)*. The pointer itself, which you own, 
isn't shared at all, and shouldn't be: it's your own reference to 
shared data. You can read and write that pointer all you want. 
What you must not be able to do is read and write *c.

Although, when it's a global?.. I'm not sure. We can have the 
compiler always generate a by-reference access, i.e. make that 
part of the language spec. Because full-on read of C.sizeof can't 
be statically proven thread-safe generically anyway (that's why 
generated copying and assignment don't make any sense for 
`shared`).


More information about the Digitalmars-d mailing list