彼得森算法会陷入僵局吗?
Can Peterson algorithm get in deadlock?
所以假设我们有两个进程(0 和 1)。
0 调用 enter_region。
它设置 interested[0]= TRUE
执行停止。
现在进程1来了。
interested[1] = TRUE
turn = 1
在while循环中条件满足,所以进入临界区。
执行回到 0。
turn = 0
while循环条件也为真,所以0都不能进入临界区,导致死锁。
对吗?或者示例算法在某处包含错误?
图片来自:tanenbaum操作系统
The while loop condition also true, so neither 0 can enter the critical section, which results in deadlock.
Is it right?
否,因为线程 1
将 turn
设置为 1
会导致线程 0
在被调度时脱离循环。
所以假设我们有两个进程(0 和 1)。
0 调用 enter_region。
它设置 interested[0]= TRUE
执行停止。
现在进程1来了。
interested[1] = TRUE
turn = 1
在while循环中条件满足,所以进入临界区。
执行回到 0。
turn = 0
while循环条件也为真,所以0都不能进入临界区,导致死锁。
对吗?或者示例算法在某处包含错误?
图片来自:tanenbaum操作系统
The while loop condition also true, so neither 0 can enter the critical section, which results in deadlock.
Is it right?
否,因为线程 1
将 turn
设置为 1
会导致线程 0
在被调度时脱离循环。