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