Shared Hell

Christopher Wright dhasenan at gmail.com
Wed Oct 28 04:21:58 PDT 2009


Walter Bright wrote:
> Denis Koroskin wrote:
>> I've recently updated to DMD2.035 (from DMD2.031 because all the later 
>> versions had issues with imports) and for the first time faced 
>> problems with shared modifier.
>>
>> I don't need shared and all my globals are __gshared (they are 
>> globally unique instances that don't need per-thread copies).
> 
> I don't understand. Are you running multiple threads? Are those threads 
> accessing globals?
> 
> A function that accesses shared data has to put in fences. There's no 
> way to have the same code deal with shared and unshared code.

Acquiring a lock on a non-shared instance is safe, just an unnecessary 
expense. I would have looked into optimizing this expense away rather 
than punting the problem to the programmer.

> As an escape from the type system, you can always cast away the 
> shared-ness. But I wonder about code that both uses global variables 
> shared across threads that don't need synchronization?

Maybe the methods are mostly inherently threadsafe. Only a small portion 
requires locking, so it's more efficient to handle it manually.



More information about the Digitalmars-d mailing list