看板 Grad-ProbAsk 關於我們 聯絡資訊
小弟想請教幾個問題 https://imgur.com/VOFSNZi (A) 不懂為什麼B會造成死結 我的理解: 設有P1 P2 P3 =>P1先wait(acct1) 其他P2 P3被鎖住 =>P1執行完amount[acct1]和amount[acct2] =>解開acct2 但P2 P3還是被鎖住 =>解開acct1 P2 P3一起進入使用變數 =>race condition 是這樣嗎 但它卻是說會造成deadlock 請問大大可以解釋一下嗎 然後這個程式碼 也會造成 race condition嗎? (B)也可以幫我解釋一下嗎 附上解答 https://imgur.com/HdX1Zw4 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.13.17.107 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1548060077.A.D6A.html
z3588191: 解答上的例子是說P1持A P2持B 互相等待=>deadlock 01/21 17:18
z3588191: 一次只request一個就可以y拿掉hold-and-wait 01/21 17:19
kaidi620: 這個是板上大神的答案 其實我也不知道對不對 因為前面幾 01/21 18:11
kaidi620: 也有些沒正確 我想問一下 那我的邏輯有問題嗎 01/21 18:12
kaidi620: 這樣是否會造成 race condition呢 01/21 18:12
z3588191: 一般來說v()應該是atomic所以你的例子的P2P3不會同時進 01/21 18:18
z3588191: 我是沒想到有race condition的例子 01/21 18:19
kaidi620: 抱歉 不太懂 atonic是什麼意思 請大神可以解釋一下嗎 01/21 19:53
A4P8T6X9: atomic 就是該操作做完前不會換人做。 01/22 08:07
kaidi620: 謝謝兩位大神 那我懂了 01/22 13:52