【问题标题】:Why flag[other processes] == true Petersen's Solution为什么标记[其他进程] == true 彼得森的解决方案
【发布时间】:2016-04-02 10:53:26
【问题描述】:

我最近正在研究彼得森的关键部分问题的解决方案。 让 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);

【问题讨论】:

    标签: operating-system critical-section


    【解决方案1】:

    while(flag[j] == true && turn == j);

    这一行说如果另一个进程正在执行它的临界区,那么第一个进程应该继续等待,直到第二个进程将其标志变量(共享变量)设置为 false。

    只有在第二个进程执行其临界区,并将其标志变量(共享变量)设置为 false 后,第一个进程才会开始执行其临界区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2015-10-19
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      相关资源
      最近更新 更多