Zagadnienie współbieżności podwójnego testu Singleton
Klauzula odłogowania pochodzi z jetbrains.net. Po przeczytaniu tego i kilku innych artykułów w sieci nadal nie rozumiem, jak można zwrócić wartość null, gdy pierwszy wątek przejdzie do blokady. Ktoś, kto to rozumie, może mi pomóc i wyjaśnić to w bardziej humanizowany sposób?
„Rozważ następujący fragment kodu:
<code>public class Foo { private static Foo instance; private static readonly object padlock = new object(); public static Foo Get() { if (instance == null) { lock (padlock) { if (instance == null) { instance = new Foo(); } } } return instance; } }; </code>
Biorąc pod uwagę powyższy kod, zapisy, które inicjalizują instancję Foo, mogą zostać opóźnione do momentu zapisania wartości instancji, tworząc w ten sposób możliwość, że instancja zwróci obiekt w stanie unitialized.
Aby tego uniknąć, wartość instancji musi być zmienna. „