I 잠금 트리 교착 상태 감지 알고리즘의 몇 가지 예에 노력하고 교착이 특정 상황에서 발생하는 방법을 알아낼 수 없었다 봤는데 : 내이 잠금을 이해에서잠금 트리 알고리즘의 교착 상태 감지
Thread 1: Thread 2:
lock(A) lock(E)
lock(C) lock(D)
unlock(C) unlock(D)
lock(B) unlock(A)
lock(D) lock(A)
lock(E) lock(C)
unlock(E) unlock(C)
unlock(D) unlock(A)
unlock(B)
unlock(A)
을 스레드가 반대 순서로 그 잠금을 가지고 있기 때문에, D - E : E 및 T2 - D :
T1: T2:
/\
A E A
/\ | |
C B D C
|
D
|
E
이는 교착 상태가 노드 T1에서 발생 될 수 있을까요 : 나무의 모양은?
어떻게 교착 상태를 제거하기 위해 하나의 잠금 및 잠금 해제 문을 삽입 할 것을 제안 할 수 있습니까?
아, 이제 알겠습니다! 고맙습니다. 그래도 한 가지 추가 질문이 있습니다. T2 : ** lock (b) **, lock (e), lock (d)을 추가하면 발생하는 교착 상태를 피할 수 있습니까? 아마도 – Maputo
입니다. 어려운 부분은 교착 상태를 피하기위한 것이 아니라 교착 상태를 피하면서 스레드가 병렬로 실행되도록하는 것입니다. 다른 방법으로는 스레드 2가 완료 될 때까지 스레드 1을 생성시에 잠글 수 있습니다 – Gir