Demo entry 6760305

x

   

Submitted by anonymous on Sep 12, 2018 at 12:28
Language: C. Code size: 770 Bytes.

//프로세스가 공유하는 데이터 flag[] : 부울(boolean) 배열, turn : 정수
flag[0] = false;
flag[1] = false;
turn = 0;						//공유 변수, 0 또는 1

//프로세스 P0;					//프로세스 P0 임계 영역 진입 절차
flag[0] = true;					//P0 임계 영역 진입 표시
while (flag[1] == true) {		//P1의 임계 영역 진입 여부 확인
	if (turn == 1) {			//P1이 진입할 차례가 되면
		flag[0] = false;		//플래그를 재설정하여 P1에 진입 순서 양보
		while (turn == 1) {		//turn을 바꿀 때까지 대기
			//바쁜 대기
		}
		flag[0] = true;			//P1이 임계 영역에 재진입 시도
	}
}
/* 임계 영역*/;
turn = 1;						//P1에 진입 순서 제공
flag[0] = false;				//P0의 임계 영역 사용 완료 지정
/*나머지 영역*/					//P0이 나머지 영역 수행

//프로세스 P1
flag[1] = true;
while (flag[0] == true) {
	if (turn == 0) {
		flag[1] = false;
		while (turn == 0) {
			//바쁜 대기
		}
		flag[1] = true;
	}
}
/*임계 영역*/
turn = 0;
flag[1] = false;
/*나머지 영역*/

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).