0
對於下面,我想知道在下面的情況下會發生什麼:下面的僞代碼是否有互斥,無限期延期,兩者都不是?
//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;
}
只是有點此刻這個難倒,因爲我認爲它只是缺乏相互排斥 - 但只是想確保!
相互排斥是由OS提供的設施 - 所以沒有它不 – 2014-10-05 03:00:52
在我看來,它只有數據種族和未定義的行爲。 – 2014-10-05 03:18:09
要實現互斥,請使用mutex()工具,爲這兩個代碼的關鍵部分使用相同的互斥體名稱。否則,如@R所述,結果將是數據競爭和未定義的行爲。 – user3629249 2014-10-05 07:56:48