lock(this)
, lock(typeof(MyType))
, lock("a string")
등의 기사와 게시물은 다른 스레드가 동일한 키를 잠그고 교착 상태가 발생할 수 있기 때문에 나쁜 습관입니다. 이 문제를 이해하기 위해 교착 상태를 설명하기 위해 샘플 코드를 만들려고했지만이 문제를 해결할 수는 없었습니다.잠금을 사용하여 교착 상태를 설명하기위한 예제 코드
누군가이 고전적인 문제를 보여주는 간결한 코드를 작성할 수 있습니까? 짧게 유지하십시오. 코드를 더 작은 덩어리로만 소화 할 수 있습니다.
편집 : 내가 생각하기에 lassevk은 잘 요약합니다. 진짜 문제는 당신이 자물쇠를 통제 할 수 없다는 것입니다. 그런 일이 발생하면 잠금이 호출되는 순서를 제어 할 수 없으며 잠재적 인 교착 상태를 허용합니다.
lock(this)
, lock(typeof(MyType))
등은 모두 제어 할 수없는 잠금 장치를 선택한 상황입니다.
아하, 내가 게시 한 동안 똑같은 샘플을 쓰고 있었다 :) :)하지만 long과 int를 선택했다. – Maghis
아주 좋은 예 : 교착 상태를 만드는 핵심 요소는 ** 다른 ** 주문에서 두 개의 리소스를 잠그고있다. –
그렇습니다. 이것은 레벨 고정 된 잠금과 같은 기술이 구축되는 원리이며 교착 상태를 피할 수있는 이유는 무엇입니까? – Maghis