DCLP에 대한 고찰이 맘에 들었던 자료하나를 찾았다. 예전부터 Singleton 패턴을 구현할때 DCLP부분이 늘 애매했었는데, 보다 깊은 이해를 할 수 있도록 가이드를 해줄만한 썩 괜찮은 내용이다.
DCLP_DDJ_Jul_Aug_2004_revised.pdf
개략적으로 살펴보면 이렇다.
전형적인 싱글톤 패턴을 구현하는 C++ code. 싱글프로세서 기반에서는 적절하다.
멀티프로세서 기반에서는 쓰레드안전하게 하기위해서 흔히들 이중으로 확인하는 Double-checked Locking Pattern을 사용하는 코드가 사용된다. 문제점이야 여전히 남아있지만서도.
그래서 사용되는 것이 volatile이라는 한정지시자를 사용한다.
완벽해보이지만, 여전히 컴파일러에 따라 최적화 로직 차이가 있음으로 인해 문제가 발생할 수 있다는 의견이 있다. 그래서 Memory Barrier를 두어 보다 안전하게 코드를 작성한다.
But, DCLP is broken....Never use it!!
'$ SaVvY > » computer' 카테고리의 다른 글
표준 C에 정의된 함수, 키워드, 전처리기, ANSI C 이스케이프문자, 오퍼레이터, 매크로, 데이터타입, 전역변수 (0) | 2014.07.05 |
---|---|
넘치는 램으로 SSD를 돕자. (0) | 2014.05.22 |
2013년 11월 16일. iPhoto 업데이트 안되던 날. (0) | 2013.11.16 |
구조체 멤버변수의 옵셋 구하는 매크로.... (0) | 2013.07.10 |
My Colored Command Line. (0) | 2013.07.10 |