Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#의 교착 상태와 기아

<시간/>

교착 상태는 리소스가 스레드에 의해 잠겨 있고 동시에 다른 스레드에 필요할 때 발생합니다. 이 문제는 다중 처리 시스템에서 자주 발생합니다.

두 개 이상의 스레드가 다른 스레드에 속한 리소스를 기다릴 때 발생할 수 있습니다. 다음은 예입니다 -

1번 스레드 2번 스레드
잠금 P 사용 잠금 Q 사용
잠금 Q 요청 잠금 P 요청

스레드 1은 스레드 2에 속하기 때문에 잠금 Q를 얻지 못합니다. 같은 방식으로 스레드 2는 원래 소유자가 스레드 1이기 때문에 잠금 P를 얻지 못합니다.

교착 상태는 3개의 스레드와 3개의 잠금이 공통인 경우 발생하는 3방향 교착 상태일 수도 있습니다. 같은 방식으로 4방향, 5방향 및 기타 교착 상태에 대해 발생할 수 있습니다.

기아 상태는 다중 스레드 응용 프로그램에서 하나 이상의 실행 가능한 스레드를 영구적으로 차단하는 것입니다.