我想了解peterson的同步解決方案。作爲參考,我附上了閱讀的來源: 操作系統:Peterson的解決方案
這是來自維基百科頁面。現在, 假設P1想要進入關鍵部分。它設置了flag 1 = true
和turn=0
。如果P0已經處於臨界區,則P1將繼續等待while(flag[0] == true && turn ==0)
的。 我的疑問是:
- 的情況下,會發生什麼:P1執行其while循環,當P0只是試圖進入臨界區,並執行 線
flag[0] = true
。由於某種原因,它不能執行下一行並終止。在這裏,標誌[0]也是如此,並且 轉也是0. P1不必要地等待 臨界區內沒有進程。 - 爲什麼需要檢查
turn
變量。爲什麼不僅僅是這樣:while(flag[0]== true)
只要P0將 離開臨界區,flag [0] = false並且P1將能夠 進入。
我在這個同步問題有點困惑,任何幫助將不勝感激。