8
.NETのダブルチェックロックでの揮発性修飾子の必要性
複数のテキストによると、.NETでダブルチェックロックを実装する場合、ロックしているフィールドには揮発性修飾子を適用する必要があります。しかし、なぜ正確に?次の例を検討します。 public sealed class Singleton { private static volatile Singleton instance; private static object syncRoot = new Object(); private Singleton() {} public static Singleton Instance { get { if (instance == null) { lock (syncRoot) { if (instance == null) instance = new Singleton(); } } return instance; } } …