한 스레드에 의해 리소스가 잠기고 동시에 다른 스레드가 해당 리소스를 요구하면 교착 상태가 발생합니다. 이 문제는 다중 처리 시스템에서 자주 발생합니다.
이 문제는 두 개 이상의 스레드가 다른 스레드에 속한 리소스를 기다리고 있을 때 발생할 수 있습니다. 다음은 예입니다.
스레드 1 | 스레드 2 |
---|---|
잠금 P 가져오기 | 잠금 Q 가져오기 | tr>
잠금 Q 요청 | 잠금 P 요청 |
스레드 하나 아니오 잠금 Q는 스레드 2에 속하므로 획득됩니다. 마찬가지로 스레드 2는 원래 소유자가 스레드 1이었으므로 잠금 P를 획득하지 않습니다.
교착 상태는 3방향 교착 상태일 수도 있는데, 이는 3개의 스레드와 3개의 잠금이 공통되는 경우에 발생합니다. 마찬가지로 4방향, 5방향 및 기타 교착 상태가 발생할 수 있습니다.
기아 상태는 다중 스레드 애플리케이션에서 하나 이상의 실행 가능한 스레드를 영구적으로 차단하는 것입니다.
위 내용은 C#의 교착 상태 및 기아 상태의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!