gpt4 book ai didi

algorithm - 难以理解彼得森的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:03 24 4
gpt4 key购买 nike

我有点难以理解 peterson 的算法:该算法说:

flag[i] = true;
turn = j;
while (flag[j] && turn == j);
// critical section
...
// end of critical section
flag[i] = false;

现在让我们先假设标志[0]=标志[1]=真

如果 P1 开始执行,它将忙于等待 while 循环,因为 flag[0] 和 turn==0 都为真。现在如果P0不想执行,P1永远不会执行临界区。

请澄清我的疑问,我的理解可能存在差距。

谢谢

最佳答案

Now lets suppose initially flag[0]=flag[1]=true

Now if P0 does not want to execute, P1 will never execute the critical section.

两个标志都应初始化为 false。将两者都设置为 true 的唯一方法是两个进程都想执行或当前正在执行临界区。因此,如果 P1 正在等待执行,则 flag[0]true,因此 P0 必须即将执行临界区,或者正在执行临界区,之后其中 flag[0] 将被设置为 false 并且 P1 可以进入临界区。此外,如果 P1 正在等待执行,则 P0 不能同时等待执行,因为等待条件是互斥的(因为 turn 要么是 0 要么是 1,并且不能同时为两者)。

将两个标志初始化为 true 会导致您所描述的死锁。这样做是没有意义的,因为标志的含义是表明进程要进入临界区,所以如果不是这样,为什么要设置那个值?

关于algorithm - 难以理解彼得森的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37428435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com