On Monday, 6 May 2013 at 18:46:56 UTC, Andrei Alexandrescu wrote:
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



Hmm, are you referring to the same lack of a barrier that the others are also referring to?


As far as I can see, there shouldn't be a need for any other handshake in this example.

As long as the object is fully initialized before _static is written to (easy enough with just a memory barrier), there is no penalty for subsequent reads whatsoever.

Right?

Reply via email to