推 aiweisen:我很久沒寫程式了 所以不知道有沒有想錯 我是認為 02/11 12:32
→ aiweisen:Test_and_Set(lock)不是VOID 是有傳回值 所以需要一個變 02/11 12:33
→ aiweisen:數來接收Test_and_Set(lock)的結果 當然,如果我的想法 02/11 12:35
→ aiweisen:錯誤,那麼再從另一個角度來看。第二個while如果卡住了 02/11 12:36
→ aiweisen:要它執行什麼事情?應該要插NOOP 不過這裡我不知道能不能 02/11 12:36
→ aiweisen:= = 所以我想講義只用第一個While不用第二個 可能是為了 02/11 12:37
→ aiweisen:增加可讀性而已 如果拿第二個跟我同學解釋 我也不太會解 02/11 12:39
→ aiweisen:釋....囧 02/11 12:39
→ onlyeric23:恩...回傳這樣寫沒問題 然後因為用c所以沒標nop 02/11 13:02
→ onlyeric23:講義前面有提個 while( test_and_set(loct) ); 02/11 13:03
→ onlyeric23:會有starvation 所以加了個wait[] 02/11 13:04
→ onlyeric23:但除了加wait 還把test_and_set寫到condition後 02/11 13:05
→ onlyeric23:抱歉前面沒講清楚 02/11 13:05
推 kyodaisuki:我知道你在問什麼 這是Algo2 一般只有教waiting[i]移除 02/11 17:37
→ kyodaisuki:我剛剛想了一下流程 我覺得好像可以.. 02/11 17:37
→ kyodaisuki:雖然waiting[i] and test-anf-set(lock)會拆成3行組語 02/11 17:38
→ kyodaisuki:只是用key這樣寫 比較容易了解吧 key=進入鑰匙 02/11 17:40
→ onlyeric23:感謝兩位 這應該不是啥重要問題 只是卡著就很悶orz 02/11 19:56