Chr*_*_45 0 c testing synchronization
为什么进程0的第一个入口不严格交替测试 while (turn == 0) //then Enter 进程0怎么能进入 while (turn != 0),这和 while (turn != 0) 不一样吗== 1) ?
turn = 0;
//process 0 to enter
while (TRUE) {
while (turn != 0)
critical_region();
turn = 1;
noncritical_region();
}
//process 1 to enter
while (TRUE) {
while (turn != 1)
critical_region();
turn = 0;
noncritical_region();
}
Run Code Online (Sandbox Code Playgroud)
首先,你的代码是错误的。Tanenbaum 的严格交替看起来像这样(他的示例是没有块的,但我认为遵循这种方式更容易):
while (TRUE) {
while (turn != 0)
{
/* do nothing */
}
critical_region();
turn = 1;
noncritical_region();
}
Run Code Online (Sandbox Code Playgroud)
严格交替的想法有两个方面: