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. „

questionAnswers(2)

yourAnswerToTheQuestion