次の疑似コードを見てください。
boolean blocked[2];
int turn;
void P(int id) {
while(true) {
blocked[id] = true;
while(turn != id) {
while(blocked[1-id])
/* do nothing */;
turn = id;
}
/* critical section */
blocked[id] = false;
/* remainder */
}
}
void main() {
blocked[0] = false;
blocked[1] = false;
turn = 0;
parbegin(P(0), P(1)); //RUN P0 and P1 parallel
}
上記のコードを使用して、単純な相互除外ソリューションを実装できると思いました。しかし、それは機能していません。誰かが理由を知っていますか?
どんな助けでも本当に感謝します!