본문 바로가기

2015/0417

DeadLock Deadlock프로세스 또는 쓰레드는 운영체제(또는 다른 관리자)가 관리하는 자원(메모리, 파일, 디바이스 등등)을 사용하는데, 다중 프로세스/쓰레드 프로그래밍을 하면 이 자원을 공유하게 되는 일이 자주 발생한다. 각 쓰레드 또는 프로세스는 각기 독립적인 실행 흐름을 가지고 있기 때문에 자원에 동시 접근하는 경우가 발생할 수 있다. 공유자원이 비일관적으로 사용되는 것을 막기 위해서 자원의 관리자는 자원의 배타적 소유권을 유지하는 방법을 사용한다. Lock을 걸어서 여러 스레드가 동시에 공유자원을 사용하는 것을 막는 것이다. 그런데 관리자가 Lock을 잘못 사용하는 경우 어느 쓰레드도 자원을 영원히 사용할 수 없는 상태, 즉 Deadlock(교착상태)에 빠질 수 있다.Deadlock이 발생하는 이유위 그림.. 2015. 4. 25.
Effective C++ chapter 4 Effective c++ 정리 chapter 4 from 연우 김 2015. 4. 23.
Effective C++ chapter 3 Effective C++ 정리 chapter 3 from 연우 김 2015. 4. 23.
Modern Effecitve C++ item 22 : Pimple Idiom Pimpl IdiomPimpl(Pointer to Implementation) Idiom이란 include가 필요한 유저 define 타입의 멤버변수들을 해당 멤버변수들을 포함한 구조체의 포인터로 대체하는 방법이다. 말로 쓰면 어려워 보이니 실제 C++ 98에서 자주 사용하던 예시를 들어서 설명하도록 하겠다.//in header Widget.h #include #include #include class Widget{ public: Widget(); ... private: std::string name; std::vector data; Gadget g1, g2, g3; }Pimpl Idiom을 사용하지 않는다면, 자주 보는 형태의 헤더파일일 것이다. 이런 형식의 헤더파일의 문제점은 헤더파일 내에서 다른 헤.. 2015. 4. 21.