【发布时间】:2014-11-29 16:40:42
【问题描述】:
对于以下情况,我想知道在以下情况下会发生什么:
//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;
}
目前对此有点困惑,因为我认为它只是缺乏互斥-但只是想确定一下!
【问题讨论】:
-
互斥是操作系统提供的一种功能——所以不
-
在我看来,它除了数据竞争和未定义的行为之外什么都没有。
-
要实现互斥,请使用 mutex() 工具,对代码的两个关键部分使用相同的互斥锁名称。否则,正如@R 所提到的,结果将是数据竞争和未定义的行为。
标签: c process semaphore critical-section mutual-exclusion