多核心與同步

在使用多把鎖的程式中,防止死結最常見的方法為下列何者?

  1. A讓所有執行緒取得鎖的順序,在整個程式中統一規定
  2. B取得鎖之後,絕對不釋放
  3. C把執行緒的數量限制在2個以下
查看答案與解析

正確答案:A. 讓所有執行緒取得鎖的順序,在整個程式中統一規定

死結會在執行緒之間形成彼此等待對方所持有鎖的「環」時發生。例如,若所有人都遵守「一定要先取得A再取得B」,就不會出現持有B而等待A的執行緒,也就不會形成環。其他方法還有一次同時取得所需的所有鎖,或取不到時就放開已持有的鎖再重做等。

  • A. 正確。就不會形成互相等待的環。
  • B. 若不釋放,其他執行緒會永遠等待。
  • C. 即使是兩個執行緒也會發生死結。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 記憶體一致性模型(memory consistency model)所規定的是下列何者?
  2. 關於循序一致性(sequential consistency),下列說明何者正確?
  3. 將上方的兩個執行緒在不同的核心上同時執行(假設編譯器不進行重新排序)。下列哪一個結果在循序一致性下不會發生,但在x86等實際的CPU上可能發生?
  4. 關於x86的記憶體一致性模型(TSO,Total Store Order,全域儲存順序)的特徵,下列何者正確?
  5. 關於ARM或RISC-V(RVWMO)這類較弱的記憶體一致性模型,下列何者正確?

這個領域的比較