その後、条件をテストするのは良いことです。その後、条件を再テストします。
-
15-11-2019 - |
質問
可能な重複:
.NET のダブルチェックロック編集:この質問を明確にするための編集のたくさんはシングルトンについてではありません。
私は自分自身がこのようなコードを書くのを見つけます:
.if(resourceOnDiskNeedsUpdating) { lock(lockObject) { if(resourceOnDiskNeedsUpdating) // has a previous thread already done this? UpdateResourceOnDisk(); } } return LoadResourceFromDisk();
UpdateResource()
は遅い動作です。 このパターンは意味がありますか?
代替案はありますか?
解決
This called "double-checked locking".
You need a memory fence to make it correct.
他のヒント
An alternative I use would be to just use the 'volatile' keyword. http://msdn.microsoft.com/en-us/library/x13ttww7%28v=vs.71%29.aspx
所属していません StackOverflow