멀티스레드에 안전하지 않은 싱글톤 패턴
using System;
public class Singleton
{
private static Singleton instance;
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
멀티스레드에 안전한 싱글톤 패턴
public sealed class Singleton
{
private static Singleton instance = null;
private static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
}
.NET 4.x 버전 Lazy<T>를 이용한 싱글톤
public sealed class Singleton
{
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance { get { return lazy.Value; } }
private Singleton()
{
}
}
출처 : https://msdn.microsoft.com/en-us/library/ff650316.aspx
출처 : http://csharpindepth.com/Articles/General/Singleton.aspx
'프로그래밍 > C#' 카테고리의 다른 글
C# XML 내용 안전하게 읽기 (0) | 2018.02.28 |
---|---|
C# SecureString 클래스를 이용한 문자열 보호 (0) | 2018.02.27 |
C# 파일명 유효성 체크 (0) | 2018.02.26 |
C# 파일 경로 유효성 체크 (0) | 2018.02.26 |
C# DataGridView 에서 선택된 DataRow 꺼내기 (0) | 2018.01.11 |
C# 일정 범위 내에 IP 체크하기 (0) | 2017.11.09 |
C# WebBrowser 키이벤트 엔터키 막기 (0) | 2017.09.26 |
DataTable에서 Group By Sum 하기 (0) | 2015.01.19 |