为什么 flag[other processes] == true 彼得森的解决方案
Why flag[other processes] == true Petersen's Solution
我最近在研究彼得森的关键部分问题的解决方案。
设i和j两个进程进入临界区,
我不明白为什么我们在 While 循环中设置 flag[j] == true
轮到我进入临界区了
do
{
flag[i] = true;
turn = j;
while(**flag[j] == true** && turn == j);
Critical Section
flag[i] = false;
}
while(true);
while(flag[j] == true && turn == j);
这一行表示如果另一个进程正在执行它的临界区,那么第一个进程应该继续等待直到第二个进程将它的标志变量(共享变量)设置为 false。
只有在第二个进程执行了它的临界区,并将它的标志变量(共享变量)设置为false后,第一个进程才会开始执行它的临界区。
我最近在研究彼得森的关键部分问题的解决方案。 设i和j两个进程进入临界区, 我不明白为什么我们在 While 循环中设置 flag[j] == true 轮到我进入临界区了
do
{
flag[i] = true;
turn = j;
while(**flag[j] == true** && turn == j);
Critical Section
flag[i] = false;
}
while(true);
while(flag[j] == true && turn == j);
这一行表示如果另一个进程正在执行它的临界区,那么第一个进程应该继续等待直到第二个进程将它的标志变量(共享变量)设置为 false。
只有在第二个进程执行了它的临界区,并将它的标志变量(共享变量)设置为false后,第一个进程才会开始执行它的临界区。