具有比较和交换功能的有限等待互斥

时间:2019-03-07 02:22:51

标签: operating-system synchronization

我已尽我所能向每行添加了注释,但是我仍然不明白为什么在不运行流程j的关键部分的情况下最后设置waiting[j] = false;的原因。我认为waiting[j] = false;应该替换为i = j;,因此当它再次循环时,我们将运行进程j的关键部分。否则我们将一直在运行进程中是我的关键部分!

enter image description here

1 个答案:

答案 0 :(得分:1)

要使进程进入其关键部分,waiting [i]必须为false,但是只有当进程通过调用waiting [j] = false离开其关键部分时,waiting [i]才能设置为false。意味着现在进程j可以进入其关键部分,提示进程i等待。我仍在学习这些概念,所以我不确定100%。 Abraham和Silberschatz第9版在解释这些算法方面做得不够详尽。