Singleton 2

[Design pattern] Singleton Pattern with C++ 11

Singleton Pattern 1. 정의: 클래스에서 만들 수 있는 인스턴스가 오직 하나일 경우에 이에 대한 접근은 어디에서든지 하나로만 통일하여 제공한다. 2. 기본형 : 기본형의 문제는 Thread Safe 하지 않다는 것이다.: Multi-Thread 환경에서 Race Condition이 발생할 수 있다. 3. Double-Checked Locking Pattern (DCLP): 해제는 제외.: 두 번의 체크와 락을 통해서 Thread 안정성을 확보 한다. 4. Using C++11 Atomic (Acquire and Release Fences)- Atomic Class: 정수형 또는 포인터 타입에 대해 산술 연산들을 atomic하게 수행할 수 있도록 해주는 템플릿 클래스.: 이전 atomic 연..

Design Pattern 2015.07.29

[Design Pattern] Thread-Safe Singleton

위의 보이는 것은 일반적으로 사용하는 싱클턴의 방법이다. 하지만 이 방법은 Thread-Safe 하지 않다. 그래서 다음과 같이 바꾸었다. 이런식으로 하면 Thread-Safe 하게 된다고 할 수 있다. 하지만 이 방법 역시 무조건 100%확실하다고 할 순 없다. Debug모드에서는 안전하지만 만일 Release모드일때 컴파일러가스스로 최적화를 해버려 Lock에 동시 접근을 하는 경우가 극히 드물게 나타난다는 전설을... 위의 코드를 테스트는 엄청난 귀찮음이 엄습하는 관계로. 이렇게 Thread 1개 만들고, 100만번 돌려보는 것만으로 종료해버렸다.

Design Pattern 2013.02.13