那么假设我们有两个进程(0和1)。0调用enter_region。 它设置了 interested[0]= TRUE
执行被停止了。
现在进程1来了。interested[1] = TRUE
turn = 1
在 while 循环中,条件得到满足,所以它进入关键部分。
执行回到0。turn = 0
while循环的条件也是真的,所以0也不能进入关键部分,导致死锁。
请问这样做对吗?还是这个例子的算法有错误的地方?
图片来自:tanenbaum操作系统。
while循环条件也为真,所以0也不能进入关键部分,这导致死锁。
这样做对吗?
不对,因为线程 1
设置 turn
到 1
导致线 0
以期在被安排的时候掉出循环。