gpt4 book ai didi

algorithm - 彼得森的算法有一些修改

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

Peterson's Algorithm翻转转弯和旗帜命令后工作;例如:

P0:
turn = 1;
flag[0] = true;
while (flag[1] && turn == 1)
{
// busy wait
}
// critical section
...
// end of critical section
flag[0] = false;

=================

P1:
turn = 0;
flag[1] = true;
while (flag[0] && turn == 0)
{
// busy wait
}
// critical section
...
// end of critical section
flag[1] = false;

最佳答案

不,如果你翻转顺序它不起作用,因为它允许两个进程同时进入临界区。

例如,假设初始状态 flag[0] = false, flag[1] = false, turn = 0:

进程 0 运行:

turn = 1;  // flag[0] = false, flag[1] = false, turn = 1

然后上下文切换到进程1:

turn = 0;
flag[1] = true; // flag[0] = false, flag[1] = true, turn = 0

while (flag[0] && turn == 0) {} // this evaluates to false because
// process 0 was interrupted before it set flag[0] to true

// Process 1 enters the critical section...

然后上下文切换回进程0:

flag[0] = true;   // flag[0] = true, flag[1] = true, turn = 0
while (flag[1] && turn == 1) {} // this evaluates to false

// Process 0 enters the critical section..

现在两个进程都在临界区内。

必须首先设置标志,因为这是其他进程无法覆盖的事情。如果一个进程设置了 turn,那么另一个进程可以覆盖它,然后在第一个进程有机会设置标志之前进入临界区。

关于algorithm - 彼得森的算法有一些修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172076/

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