Low-Lock Singletons In D

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon May 6 11:46:56 PDT 2013


On 5/6/13 2:25 PM, Mehrdad wrote:
> On Monday, 6 May 2013 at 13:33:54 UTC, Andrei Alexandrescu wrote:
>> It's well known. Needs a memory barrier on each access, so it's slower.
>
>
> Hmm, are you saying I'm missing a memory barrier I should have written,
> or are you saying I already have a memory barrier which I'm not seeing?
>
>
> The only memory barrier I have is during initialization, and after that
> only read operations occur.

Any concurrent operation (in this case read from one thread and write 
from another) requires a handshake between threads, most often in the 
form of an release write coupled with an acquire read. Whenever the 
handshake is absent but concurrent operations on shared memory do occur, 
the code is broken. The beauty of the TLS-based pattern is that in the 
steady state there's no need for a shared read and handshake.

Andrei


More information about the Digitalmars-d mailing list