싱글톤 사용시 다음과 같이 최초 생성자 부분에 lock처리를 하게 되면
// Singleton
public static ServiceHandler Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new ServiceHandler();
}
}
return instance;
}
}
싱글톤 클래스 안에 있는 public 메서드들도 스레드로 부터 안전하게 잠금처리가 되는 것인 가요?
가령
싱글톤 클래스에 다음과 같은 메서드가 존재 할때
public SSystemSummery TryGetSystemSummery(string mainSvrIP)
{
SSystemSummery SystemSummeryResult = _thriftServiceProxy.GetService<SSystemSummery>("TryGetSystemSummery", mainSvrIP);
return SystemSummeryResult;
}
여러 쓰레드에서
ServiceHandler.Instance.TryGetSystemSummery("127.0.0.1");
이렇게 호출 했을 저 메서드는 하나의 스레드에서만 처리 되는 것인지..
아니면 별도로
public SSystemSummery TryGetSystemSummery(string mainSvrIP)
{
lock (....)
{
SSystemSummery SystemSummeryResult = _thriftServiceProxy.GetService<SSystemSummery>("TryGetSystemSummery", mainSvrIP);
return SystemSummeryResult;
}
}
이런식으로 처리를 해주어야 하는지가 궁금합니다.
답변 부탁드립니다.
[최초 등록일: ]
[최종 수정일: 9/11/2015]