看板 Grad-ProbAsk 關於我們 聯絡資訊
這題正解應該是都滿足, 解答之所以會說progress不滿足,我猜是漏看了一行: We assume that each line of statement in the algorithm is atomic. 而原PO似乎也犯了同樣錯誤,沒有把題目該行附上, atomic是指該行指令是一氣呵成完成的,也就是中途不會受到干擾 所以如果不是atomic,則 ticket[p] = count = count + 1; 可能會使兩process寫入count的值時因順序交錯而產生race condition的問題 導致出現相同的count值(或ticket[p]值) 於是兩個process都會卡在while loop, 因此不滿足progress(無法在有限時間決定誰進入CS) 如果加上atomic這個條件,則不會發生上述問題 而mutual exclusion滿足是因為兩ticket值比較一定有一個較小一個較大, 只有一個能進入CS bounded waiting滿足是因為剛從CS出來的process若想再次進入, ticket的值會是前一次count值加一,一定較大,會使另一process進入CS 因此三條件皆滿足 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.139.102
wheels:拍謝 雞婆一點幫你修正一下^^" 是count值被assign兩次後兩 08/01 00:40
wheels:邊都抓到同樣的值當ticket 不是會出現相同的count值 08/01 00:41
wheels:因為count是global vairable這邊語意這樣會有點問題^^" 08/01 00:42
wheels:不過我想你的意思就是我說的這樣啦 sorry雞婆了XD 08/01 00:42
wheels:而且我覺得mutual exclusion不滿足 08/01 01:11
wheels:對不起,你的文章我沒看完整,atomic下的確是都滿足 08/01 01:31
wheels:...搞了半天還是洪傑對了,看我的第二篇回文吧^^" 08/01 01:42
wheels:上面那行當我沒說XD  你是對的! 08/01 12:51
wheels:這個case有加atomic完全就是Software solution algo3的翻版 08/01 12:57