Circular Wait (1) 썸네일형 리스트형 [C++] 데드락 방지 락(deadlock free lock) - 순환 대기(Circular wait) 제거 들어가며 이전 글 데드락(Deadlock)에서 데드락이 발생하기 위해서는 상호 배제(Mutual Exclusion), 점유 대기(Hold and Wait), 비선점(Non-Preemption), 순환 대기(Circular Wait). 이 네가지 조건이 모두 충족되어야 한다고 이야기 했다. 예를 들어 두 유저간의 거래를 처리하는 서버가 있다고 가정하자. A가 B와의 거래를 요청 한다. 동시에 B가 A와의 거래를 요청한다. 서버는 스레드 1번에서 A->B의 거래를 위해 요청자인 A유저 객체의 lock을 설정한다. 동시에 스레드 2번에서 B->A의 거래를 위해 요청자인 B유저 객체의 lock을 설정한다. 스레드 1번은 A->B의 거래를 완료하기 위해 B유저 객체의 lock을 마저 설정 하려고 하지만 B유저 객.. 이전 1 다음