[理工] OS台大資工101

看板Grad-ProbAsk作者 (小紅)時間10年前 (2016/02/13 20:52), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串1/1
http://i.imgur.com/L3m7bjS.jpg
第一題 我看版上之前的解釋 locks[acct1].p()=1 locks[acct2].p()=0 就會造成deadlock 但是我覺得他不管怎麽跑也跑不出上面的結果 根本不會有deadlock 感覺很怪QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.20.168 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1455367952.A.067.html

02/13 21:00, , 1F
thread 1 : transfer_money(1, 2, 100);
02/13 21:00, 1F

02/13 21:00, , 2F
thread 2 : transfer_money(2, 1, 100);
02/13 21:00, 2F

02/13 21:01, , 3F
thread 1 跑完 locks[1].p() 後 CPU 被 thread 2 搶走
02/13 21:01, 3F

02/13 21:01, , 4F
thread 2 跑完 locks[2].p() 後就會形成 deadlock 了
02/13 21:01, 4F

02/13 21:02, , 5F
t1 在等 locks[2], t2 在等 locks[1] ((應該是這樣吧?!
02/13 21:02, 5F

02/13 21:19, , 6F
lock可以上下交換@@? 不是都照著code跑
02/13 21:19, 6F

02/13 21:20, , 7F
沒有上下交換啊, 我覺得你是function參數沒看懂吧
02/13 21:20, 7F

02/13 21:23, , 8F
對thread2而言他現在是執行第1行, 你爸跟你媽在同時轉帳
02/13 21:23, 8F

02/13 21:24, , 9F
給對方, 你爸第一步你媽搶走, 然後你媽跑完第一步就dead
02/13 21:24, 9F

02/13 21:24, , 10F
lock了, 不是同一個轉帳事件.
02/13 21:24, 10F

02/13 21:29, , 11F
知道了 永遠的銀行死結XD 感謝
02/13 21:29, 11F
文章代碼(AID): #1MloSG1d (Grad-ProbAsk)