Singleton verifica el problema de concurrencia

La siguiente cláusula está tomada de jetbrains.net. Después de leer este y otros artículos en la web, todavía no entiendo cómo es posible devolver el valor nulo, después de que el primer subproceso entre en la cerradura. ¿Alguien que sí lo entiende puede ayudarme y explicarme por favor de una manera más humanizada?

"Considere el siguiente código:

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

Dado el código anterior, las escrituras que inicializan la instancia de Foo podrían retrasarse hasta la escritura del valor de la instancia, creando así la posibilidad de que la instancia devuelva un objeto en un estado unitario.

Para evitar esto, el valor de instancia debe hacerse volátil. "

Respuestas a la pregunta(2)

Su respuesta a la pregunta