Very limited shared promotion

Steven Schveighoffer schveiguy at gmail.com
Tue Jun 18 13:29:11 UTC 2019


On 6/17/19 7:46 PM, Manu wrote:
> Is this valid?
> 
> int x;
> void fun(scope ref shared(int) x) { ... }
> fun(x); // implicit promotion to shared in this case
> 
> This appears to promote a thread-local to shared. The problem with
> such promotion is that it's not valid that a thread-local AND a shared
> reference to the same thing can exist at the same time.
> 
> With scope, we can guarantee that the reference doesn't escape the callee.
> Since the argument is local to the calling thread, and since the
> calling thread can not be running other code at the same time as the
> call is executing, there is no way for any code to execute with a
> thread-local assumption while the callee makes shared assumptions.
> 
> I think this might be safe?
> 

Seems like it would be safe, but what is the use case for it? If you 
have a scope shared, which can't actually get shared with anything else, 
what does it buy you?

-Steve


More information about the Digitalmars-d mailing list