shared - i need it to be useful

Timon Gehr timon.gehr at gmx.ch
Fri Oct 19 00:29:01 UTC 2018


On 18.10.18 23:34, Erik van Velzen wrote:
> If you have an object which can be used in both a thread-safe and a 
> thread-unsafe way that's a bug or code smell.

Then why do you not just make all members shared? Because with Manu's 
proposal, as soon as you have a shared method, all members effectively 
become shared. It just seems pointless to type them as unshared anyway 
and then rely on convention within @safe code to prevent unsafe 
accesses. Because, why? It just makes no sense.

With the proposal I posted in the beginning, you would then not only get 
implicit conversion of class references to shared, but also back to 
unshared.

I think the conflation of shared member functions and thread safe member 
functions is confusing. shared on a member function just means that the 
`this` reference is shared. The only use case for this is overloading on 
shared. The D approach to multithreading is that /all/ functions should 
be thread safe, but it is easier for some of them because they don't 
even need to access any shared state. It is therefore helpful if the 
type system cleanly separates shared from unshared state.


More information about the Digitalmars-d mailing list