多核心與同步
在使用多把鎖的程式中,防止死結最常見的方法為下列何者?
- A讓所有執行緒取得鎖的順序,在整個程式中統一規定
- B取得鎖之後,絕對不釋放
- C把執行緒的數量限制在2個以下
查看答案與解析
正確答案:A. 讓所有執行緒取得鎖的順序,在整個程式中統一規定
死結會在執行緒之間形成彼此等待對方所持有鎖的「環」時發生。例如,若所有人都遵守「一定要先取得A再取得B」,就不會出現持有B而等待A的執行緒,也就不會形成環。其他方法還有一次同時取得所需的所有鎖,或取不到時就放開已持有的鎖再重做等。
- A. 正確。就不會形成互相等待的環。
- B. 若不釋放,其他執行緒會永遠等待。
- C. 即使是兩個執行緒也會發生死結。