여기에 설명 된 싱글 톤 패턴에 대한 몇 가지 질문이 있습니다. http://msdn.microsoft.com/en-us/library/ff650316.aspx
다음 코드는 기사에서 발췌 한 것입니다.
using System;
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;
}
}
}
특히, 위의 예에서 잠금 전후에 인스턴스를 null과 두 번 비교할 필요가 있습니까? 이것이 필요합니까? 먼저 잠금을 수행하고 비교해 보는 것은 어떻습니까?
다음을 단순화하는 데 문제가 있습니까?
public static Singleton Instance
{
get
{
lock (syncRoot)
{
if (instance == null)
instance = new Singleton();
}
return instance;
}
}
잠금을 수행하는 데 비용이 많이 듭니까?