作者: 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] ((应该是这样吧?!
作者: amge1524 (台湾加油) 2016-02-13 21:20:00
没有上下交换啊, 我觉得你是function参数没看懂吧对thread2而言他现在是执行第1行, 你爸跟你妈在同时转帐给对方, 你爸第一步你妈抢走, 然后你妈跑完第一步就deadlock了, 不是同一个转帐事件.