2005년 5월 11일 수요일

Singleton 구현

참고) 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일 경우 사용이 불가능 할 수도 있음

댓글 없음:

댓글 쓰기