최근에는 운영 체제 개념을 연구하면서 엄격한 변경을 배우게되었습니다. 우리는 다음과 같이 이동이 개 프로세스를 경쟁 조건의 가능성을 줄이고 처리하려면 :3 가지 프로세스에 대한 엄격한 변경
프로세스 0 :
While (TRUE) {
while (turn != 0); // wait
critical_section();
turn = 1;
noncritical_section();}
}
프로세스 1 :
While (TRUE) {
while (turn != 1); // wait
critical_section();
turn = 0;
noncritical_section();
}
하지만 내가 처리 할 수있는 방법 궁금하네요 3 경주 조건을 훨씬 더 줄이기위한 프로세스?
나의 접근 방식은 다음과 같습니다 프로세스 0 :
while (turn != 0 && turn != 2); // wait
critical_section();
turn = 1;
noncritical_section();}
프로세스 1 :
while (turn != 1 && turn != 0); // wait
critical_section();
turn = 2;
noncritical_section();}
프로세스 3 :
while (turn != 1 && turn != 2); // wait
critical_section();
turn = 0;
noncritical_section();}
내 접근 방식은 괜찮습니까? 너희들은 뭐라고 제안하니? 거기에 더 좋은 점이 있습니까?
덕분에 당신은 예를 들어, 그것은 회전 = 0 턴 = 1로 가거나 = 2 코드에 따라 수 차례 수, 어쨌든 반드시 엄격하게 대체하지 것 무슨와
발생하는 특별한 문제가 있습니까? 작동하지 않는 것이 있습니까? 특정 기술적 세부 사항이 있습니까? 그렇지 않다면 작업 코드에 대한 피드백 요청을 https://codereview.stackexchange.com/ –
@ FrançoisAndrieux로 보내야합니다. 이것은 이론적 인 질문입니다. 두 가지 프로세스를 처리하는 코드를 배웠습니다. 난 그냥 엄격한 교대를 사용하여 3 프로세스를 처리하는 내 접근 방식이 효과가 있는지 알고 싶다? 또는 이것에 대한 더 나은 해결책이 있다면. – Painkiller
이러한 종류의 질문에 대한 문제는 "거기에 더 좋은 것이 있습니까?"라는 대답입니다. 거의 확실하게 "아마"입니다. 개선 할 수없는 완벽한 솔루션을 찾지 못할 수도 있습니다. 만장일치로 받아 들여지는 이상적인 해법이 존재하기에 충분할만큼 공통적 인 문제는 아니기 때문에 정답입니다. 그 외에도 다른 솔루션을 정당화하는 데 도움이되는 문맥은 없습니다. 오히려이 질문은 너무 광범위하거나 주로 의견을 바탕으로 한 것입니다. –