[理工] OS台大資工101

作者: f1256421 (小紅)   2016-02-13 20:52:30
http://i.imgur.com/L3m7bjS.jpg
第一題 我看版上之前的解釋
locks[acct1].p()=1
locks[acct2].p()=0
就會造成deadlock
但是我覺得他不管怎麽跑也跑不出上面的結果 根本不會有deadlock 感覺很怪QQ
作者: amge1524 (台灣加油)   2016-02-13 21:00:00
thread 1 : transfer_money(1, 2, 100);thread 2 : transfer_money(2, 1, 100);thread 1 跑完 locks[1].p() 後 CPU 被 thread 2 搶走thread 2 跑完 locks[2].p() 後就會形成 deadlock 了t1 在等 locks[2], t2 在等 locks[1] ((應該是這樣吧?!
作者: f1256421 (小紅)   2016-02-13 21:19:00
lock可以上下交換@@? 不是都照著code跑
作者: amge1524 (台灣加油)   2016-02-13 21:20:00
沒有上下交換啊, 我覺得你是function參數沒看懂吧對thread2而言他現在是執行第1行, 你爸跟你媽在同時轉帳給對方, 你爸第一步你媽搶走, 然後你媽跑完第一步就deadlock了, 不是同一個轉帳事件.
作者: f1256421 (小紅)   2016-02-13 21:29:00
知道了 永遠的銀行死結XD 感謝

Links booklink

Contact Us: admin [ a t ] ucptt.com