Process 操作系统进程同步中感兴趣的变量机制有进展吗?

Process 操作系统进程同步中感兴趣的变量机制有进展吗?,process,operating-system,synchronization,critical-section,Process,Operating System,Synchronization,Critical Section,P1和P2两个进程需要访问代码的关键部分。考虑进程使用的以下同步构造: /* P1 */ while (true) { wants1 = true; while (wants2 == true); /* Critical Section */ wants1 = false; } /* Remainder section */ /* P2 */ while (true) { wants2 = true; while (wants1 ==

P1和P2两个进程需要访问代码的关键部分。考虑进程使用的以下同步构造:

/*  P1   */
while (true) {
    wants1 = true;
    while (wants2 == true);
    /* Critical Section */
    wants1 = false;
}
/* Remainder section */
/*  P2   */
while (true) {
    wants2 = true;
    while (wants1 == true);
    /* Critical Section */
    wants2=false;
}
/* Remainder section */
这里,wants1和wants2是共享变量

我的问题是就进展进行辩论

当P1想要进入临界段并将其相关变量设置为true并检查P2的相关变量是否为true时,可能出现这种情况。这里,(考虑)P2的兴趣变量为True,因此P1将卡在while循环中,等待P2变得不感兴趣。因为,P2仍然停留在while循环中,等待P1感兴趣的变量变为false。因此,这两个过程都在互相等待,没有一个进入关键部分

进度定义:如果没有流程在其关键部分执行,并且某些流程希望进入其关键部分,则只有那些未在其剩余部分执行的流程可以参与决定下一个将进入其关键部分,并且此选择不能无限期推迟

那么,为什么到处都有书面的进展呢


如果wants1和wants2都为真,则将无限期推迟,那么为什么会有进展?

该代码刚刚中断。只要看一眼就可以看出两个“想要”都可以设置为真,然后两个进程都会永远循环:(是的,它被打破了。有一个明显的死锁(livelock).但是否存在进展?我知道这不能使用。但我只想澄清我对主题进展的理解。这两个过程都进入关键部分的入口部分,并竞争无限期进入关键部分,因此我认为进展不存在,但在一些在线来源上,我发现作者已经编写了它没有解释原因的sts。我不认为livelock算作前进:)