作者: 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了, 不是同一個轉帳事件.