gpt4 book ai didi

algorithm - 如果我们将 Peterson 算法中的命令重新排序以实现互斥,会发生什么情况?

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

我读过这个关于 Peterson 的互斥算法。然后有一个问题,如果我们重新排序 do...while 循环中的第一个和第二个命令会发生什么?如果我们这样做,我看不到会发生什么......有人能告诉我我错过了什么吗?

do {
flag[me] = TRUE;
turn = other;
while (flag[other] && turn == other)
;
critical section
flag[me] = FALSE;
remainder section
} while (TRUE);

最佳答案

如果您重新排序这两个命令,您将同时运行这两个进程:

turn = 1;                       |      turn = 0;
flag[0] = true; | flag[1] = true;
while(flag[1] && turn==1) | while(flag[0] && turn==0)
; | ;
critical section 0 | critical section 1
flag[0] = false; | flag[1] = false;

这可能会按以下顺序执行:

Process 1: turn = 0;
Process 0: turn = 1;
Process 0: flag[0] = true;
Process 0: while(flag[1] && turn==1) // terminates, since flag[1]==false
Process 0: enter critical section 0
Process 1: flag[1] = true;
Process 1: while(flag[0] && turn==0) // terminates, since turn==1
Process 1: enter critical section 1
Process 0: exit critical section 0
Process 1: exit critical section 1

这违反了互斥准则。

关于algorithm - 如果我们将 Peterson 算法中的命令重新排序以实现互斥,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426624/

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