⌨ DEVELOPMENT/Design Pattern
[C++] DCLP - Double-Checked Locking Pattern
[C++] DCLP - Double-Checked Locking Pattern
2015.12.19DCLP Double-Checked Locking Pattern GOF의 23가지 패턴 중 싱글톤 패턴 (Singleton Pattern) 에서 사용하는 패턴 입니다. 단일로 사용하는 패턴은 아니고 싱글톤 패턴의 단점을 보완해주는 역할을 하게 되죠 2015/12/17 - [Development/Design Pattern] - [C++] 싱글톤 패턴 - Singleton Pattern 이전 글 에서 보면 안전해보이고 문제가 없을 것 같지만 멀티쓰레드 환경에서는 Thread safe 이슈가 있습니다. 바로 싱글톤 패턴의 핵심인 단일 인스턴스의 생성이 보장되지 않는다는것이죠 static singleton* instance() { if (_instance == nullptr) { _instance = new s..
[C++] 싱글톤 패턴 - Singleton Pattern
[C++] 싱글톤 패턴 - Singleton Pattern
2015.12.17Singleton Pattern GOF의 23가지 패턴 중 가장 쉬우면서 많이쓰이며, 가장 문제가 될 소지를 가지는 패턴입니다. 먼저 Singleton Pattern의 용도는 하나의 프로그램 내에서 하나의 인스턴스만을 생성해야 하는 상황에서 사용됩니다. 공용 데이터를 관리하는 클래스나, 환경설정등을 관리하는 클래스의 경우엔 하나의 인스턴트로 관리되는 것이 일반적이며, 이때 Singleton Pattern을 적용할 수 있습니다. class singleton { private: static singleton* _instance; singleton() {} singleton(const singleton& other); ~singleton() {} public: static singleton* instance(..
[C++] RAII 패턴 - Resource Acquisition Is Initialization Pattern
[C++] RAII 패턴 - Resource Acquisition Is Initialization Pattern
2015.12.16RAII RAII(Resource Acquisition Is Initialization)은 유명한 design pattern 중의 하나로 C++ 언어의 창시자인 Bjarne Stroustrup에 의해 제안되었다. RAII 패턴은 C++ 같이 개발자가 직접 resource 관리를 해주어야 하는 언어에서 leak 을 방지하기 위한 중요한 기법으로 해당 리소스의 사용 scope이 끝날 경우에 자동으로 해제를 해주며 exception이 발생하거나 하는 경우에도 획득한 자원이 해제됨을 보장하여 안전한 코드를 작성할 수 있다. resource라 하면 memory가 될 수도 있고 handle 이 될 수도 있다. 즉, 모든 Leak이 일어날 수 있는 resource에 대해서 안전하게 처리할 수 있는 패턴이다. 그 중 ..