我在一本关于操作系统的书中找到了以下代码。这是一种称为“严格更改”的技术,旨在通过在进程进入关键区域时使用锁来防止进程之间的竞争条件。我了解比赛条件,但我不太了解这段代码。
// process 0
while(TRUE) {
while(turn != 0) /* loop */
critical_region();
turn = 1;
noncritical_region();
}
旁边还有这段代码。
// process 1
while(TRUE) {
while(turn != 1) /* loop */
critical_region();
turn = 0;
noncritical_region();
}
我认为第二个 while 循环的代码中可能存在拼写错误。如果没有,那么有人可以解释这段代码是如何工作的吗?书中的解释对我来说没有意义。它只在非常笼统、抽象的层面上才有意义。但是,当我查看此代码时,我就是不明白。