C++11 call_once()을 사용하여 thread에 안전한 singleton 구현하기
C++11 call_once()을 사용하여 thread에 안전한 singleton 구현하기
Singleton 객체를 생성하는 방법은 다양하게 있다. template을 사용하는 방법, thread을 사용하는 방법 등.. 하지만 multi-thread 상태에서 singleton을 생성할 때는 상황에 따라서 인스턴스가 두 개 이상 생성될 수 있는 등 원하지 않는 동작을 할 경우가 있다.
1. Thread을 고려하지 않은 Singleton 생성
우선 다음 코드는 Thread을 고려하지 않고 Template을 사용한 Singleton 생성 방법이다.
위 코드는 Thread를 고려하지 않기 때문에 생성때 예상하지 못하는 오류들이 발생할 수 있다.
댓글
댓글 쓰기