Static problem

Stanislav Blinov stanislav.blinov at gmail.com
Thu Oct 7 13:32:43 PDT 2010


Steven Schveighoffer wrote:

>> What I'd propose is either:
>> 1) Create your own lock-free associative array (yup, reinvent the 
>> wheel to introduce AA to the world of 'shared')
>> 2) In this small case it may seem best (though mind that often such 
>> cases do grow up to the point when you still need to rethink design):
>> Make your associative array __gshared and perform synchronization by 
>> hand, i.e. create a static Mutex (from core.sync.mutex) variable and 
>> initialize it in your CRegistry's static ctor, and then enclose all 
>> access to associative array in synchronized(mutex) {} blocks.
>>
>> Maybe concurrent-programming-in-D guru may propose simpler solution, 
>> but I don't see another.
> 
> FWIW, the classinfo of a class is an object, and as such can be used as 
> sort of a global lock without having to use a static constructor:
> 
> synchronized(this.classinfo)
> {
>    ....
> }
> 
> -Steve

Thanks. To my shame, I repeatedly keep forgetting about this.


More information about the Digitalmars-d-learn mailing list