'DCLP'에 해당되는 글 1건

  1. 2013.11.28 DCLP(Double-Checked Locking Pattern)

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!!


Posted by Jason Ryu
,