为什么 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后,第一个进程才会开始执行它的临界区。