今天上洪逸的課時
講到Hardware Instruction Support的第二個演算法時
他說如果把演算法中waiting[i]=False;刪掉會如何?
在筆記裡有說違反Progress<i><ii>
但是他說違反<i>是因為Pj離開C.S時會偵測到Pi想進入C.S
所以Pj會把改變waiting[i]為false而lock仍維持true
然而Pi不想進入C.S
已違背Progress<i>
但是我發現等Pj出了C.S後偵測到Pi時
不是有個判斷if(j==i)lock=false;
所以這個地方應該是先把lock改為false
而不是把waiting[i]改為false
請問是老師講錯了?
還是有其他解釋為何違反progress的方法?