how to create a local copy of shared pointer?

thedeemon dlang at thedeemon.com
Mon Oct 15 09:00:04 PDT 2012


On Monday, 15 October 2012 at 15:34:43 UTC, denizzzka wrote:

>> Because shared(S) and S are different types. Either declare s 
>> as shared too or use a cast.
>
> Why it was made in the language? This can be a safe automatic 
> conversion I think.

Theoretically compiler can work with shared and non-shared types 
very differently,  with the latter it can do all the work in 
registers without always updating the memory because it knows no 
other threads will look at this data. Shared data is much more 
volatile. So actually not only automatic but also explicit cast 
should be illegal. I don't know how much differently the compiler 
deals with these types right now though.

Currently the whole story of separating shared and local types is 
not fully thought, imho, we need some kind of 
shared-polymorphism, without it we have to use casts quite often 
and it's not a right thing to do.


More information about the Digitalmars-d-learn mailing list