Double Checked Locking

deadalnix deadalnix at gmail.com
Tue Dec 27 04:16:02 PST 2011


Le 17/12/2011 08:47, Andrew Wiley a écrit :
> I was looking through Jonathan Davis's pull request to remove static
> constructors from std.datetime, and I realized that I don't know
> whether Double Checked Locking is legal under D's memory model, and
> what the requirements for it to work would be.
> (if you're not familiar with the term, check out
> http://en.wikipedia.org/wiki/Double-checked_locking - it's a useful
> but problematic programming pattern that can cause subtle concurrency
> bugs)
> It seems like it should be legal as long as the variable tested and
> initialized is flagged as shared so that the compiler enforces proper
> fences, but is this actually true?

Well according to the spec, it should work with the garantee given by 
shared.

But in real life, the compiler is unable to ensure that. This is 
compiler issue.


More information about the Digitalmars-d mailing list