멀티 스레딩의 경우 싱글 톤 작동 방법을 알고 싶습니다. 2 개의 스레드가 아래 코드와 같이 인스턴스화 코드를 입력하고 첫 번째 스레드가 해당 부분을 잠그는 인스턴스화 코드를 입력하고 다른 스레드가 대기 할 때까지 작업을 계속한다고 가정합니다. 그럼 첫 번째 스레드가 작업을 완료하면 두 번째 스레드가 인스턴스화 코드를 입력합니다. 이제 첫 번째 스레드가 작업을 완료하고 두 번째 스레드가 새 인스턴스를 만들거나 첫 번째 스레드를 공유 할 것이므로 누가 잠금을 해제 할 책임이 있는지 알고 싶습니다. 인스턴스화 ???싱글 톤 클래스의 경우 멀티 스레딩 C#
코드 :
public sealed class Singleton
{
private static Singleton instance = null;
// adding locking object
private static readonly object syncRoot = new object();
private Singleton() { }
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
}
[스레드 안전 C# 싱글 톤 패턴] 가능한 복제 (http : // stackoverflow.com/questions/12316406/thread-safe-c-sharp-singleton-pattern) – Sanket
해당하는 경우, 싱글 톤 대신 의존성 주입을 사용하는 것이 좋습니다. 컨테이너는 단일 객체를 가져야하는 모든 클래스를 인스턴스화하며, 객체를 필요로하는 클래스에 ctor를 통해 주입됩니다. Unity는 C#에서 이것을 지원하는 하나의 프레임 워크입니다. – Itsik