concurrencylock

deadlock이 무엇인지 설명해 주세요

예상 시간
6
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

Deadlock의 네 가지 필요 조건은 각각 무엇인가요?

부가 설명

Thread A: lock(user) -> lock(order)
Thread B: lock(order) -> lock(user)

두 thread가 반대 순서로 lock을 잡으면 서로 기다리는 상황이 생길 수 있습니다.

Thread A: user lock 보유, order lock 대기
Thread B: order lock 보유, user lock 대기

이 상태에서는 둘 다 다음 단계로 갈 수 없습니다.

deadlock은 단순히 느린 상태가 아니라, 외부 개입 없이는 진행이 불가능한 상태입니다. starvation이나 livelock과도 구분해야 합니다. starvation은 특정 작업이 계속 자원을 못 얻는 상태이고, livelock은 서로 반응은 하지만 실제 진전이 없는 상태입니다.

한 줄 정리

deadlock은 서로 resource를 붙잡고 기다리며 더 이상 진행하지 못하는 순환 대기 상태입니다.