[理工] 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