C 以下伪代码是否具有互斥性、无限期延迟性、两者都没有或两者都有?
对于以下内容,我想知道在以下情况下会发生什么:C 以下伪代码是否具有互斥性、无限期延迟性、两者都没有或两者都有?,c,process,semaphore,critical-section,mutual-exclusion,C,Process,Semaphore,Critical Section,Mutual Exclusion,对于以下内容,我想知道在以下情况下会发生什么: //global declarations Boolean in1=false, in2=false; Process P1:: while(1){ //entry protocol while(in2){ in1=true; } //--critical section -- //exit protocol in1=false; } Process P2:: while(1){ //entry protocol
//global declarations
Boolean in1=false, in2=false;
Process P1::
while(1){
//entry protocol
while(in2){
in1=true;
}
//--critical section --
//exit protocol
in1=false;
}
Process P2::
while(1){
//entry protocol
in2=true;
while(in1){
in2=true;
}
//--critical section --
//exit protocol
in1=false;
}
现在我有点困惑,因为我认为它缺少相互排斥——但我只是想确定一下 伪码没有适当的互斥性。考虑P1首先执行:
- 由于最初
,P1越过其进入协议并进入关键部分in2=false
- 如果执行P2,由于仍然
,P2也会越过其进入协议并进入关键部分,因此没有互斥in1=false
- 在执行P2之后,
,in2=true
不再设置为in2
false
- 因此,P1在(in2)循环时无法越过其入口协议的
,并且在(de)中被有限地延迟