더북(TheBook)

1.7 교착 상태

 

 

교착 상태 혹은 데드락을 설명하기 전에 그림 1-26을 봅시다.

▲ 그림 1-26 현실의 교착 상태

 

자세히 보면 네 대의 차 모두 더 이상 직진할 수가 없습니다. 앞에 있는 차가 먼저 지나가야 하는데 앞에 있는 차도 그 앞에 있는 차가 지나가야 움직일 수 있습니다. 그리고 정작 자기 자신이 먼저 지나가야 하는 뺑뺑이 상황입니다(우회전을 하면 해결할 수 있지만, 여기서는 논외로 하겠습니다).

멀티스레드 프로그래밍에서 교착 상태란 두 스레드가 서로를 기다리는 상황을 의미합니다. 스레드 1은 스레드 2가 하던 일이 끝날 때까지 기다리는데, 정작 스레드 2는 스레드 1이 하던 일이 끝날 때까지 기다리는 상황입니다. 이러한 경우 두 스레드는 영원히 멈추어 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.