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를 고려하지 않기 때문에 생성때 예상하지 못하는 오류들이 발생할 수 있다.

2. call_once()기반 thread에 안전한 Singleton 생성


댓글

이 블로그의 인기 게시물

macOS가 갑자기 부팅이 되지 않을 경우 데이터 복구 또는 백업 방법

C++로 프로그래밍할 때 인자 또는 리턴 값으로 std::vector 등 STL 데이터 타입 처리하는 좋은 방법

Git 저장소를 병합하는 방법(How to merge repositories in Git)