참고) Modern C++ Design, Chapter 6 싱글톤 구현
1. Static Member function, Static Member Variable 이용
. 간단, 생성자를 이용할 수 없음
2. pointer이용
. 생성자 이용가능
. Client가 지워버릴 수 있음
. 소멸이 안됨, 리소스 반환 문제
3. reference 이용
. 생성자 이용가능
. Client가 지워버릴 수 없음
. 소멸이 안됨, 리소스 반환 문제
4. Local Static Member 이용(Meyer방법)
. 생성자 이용가능
. Client가 지워버릴 수 없음
. 소멸이 잘됨
. 리소스 반환 문제없음
. Singleton이 다른 singleton을 참조할 때 문제
5. 감지 방법 추가
. Singleton이 다른 singleton을 참조할 때 문제 handling만 가능, 해결은 아님.
6. Pheonix Singleton
. 생성자 이용가능
. Client가 지워버릴 수 없음
. 소멸이 잘됨
. 리소스 반환 문제없음
. Singleton이 다른 singleton을 참조할 때 문제해결
. atexit()함수가 reentrent하지 않은 컴파일러, 라이브러리에서는
문제가 생김.
7. 수명제어 Singleton
. dependency를 제어해 줄 수 있게 만듬.(longevity 이용)
8. Multithread Singleton
. Lock으로 보호, 성능이 느림
9. 이중 검사 Multithread Singleton
. Lock으로 보호, 성능이 빠름
. Multi CPU일 경우 사용이 불가능 할 수도 있음
댓글 없음:
댓글 쓰기