WM_PAINT 와 Critical Section 의 DeadLock
일반적으로 DeadLock 발생은 CS(Critical Secion) 2개를 서로 기다리는 상태를 많이 설명합니다.
예를 들면 Thread A,B CS A,B가 있을때 다음과 같은 순서로 실행시 DeadLock 발생합니다.
(1) Thread A CS A lock
(2) Thread B CS B lock
(3) Thread B CS A lock <-- 대기
(4) Thread A CS B lock <-- DeadLock 발생
설명 :
(3)에서 Thread B는 Thread A가 이미 잠궈놓은 CS A를 대기하고
(4)에서 Thread A는 Thread B가 이미 잠궈놓은 CS B를 대기합니다.
DeadLock 발생하였으므로 절대로 풀리지 않습니다.