多核心與同步

下列何者是死結(deadlock)的例子?

  1. A執行緒1持有鎖A並等待鎖B,執行緒2持有鎖B並等待鎖A
  2. B兩個執行緒未經同步就改寫同一個變數,導致值被破壞
  3. C一個執行緒取得鎖後立刻釋放
查看答案與解析

正確答案:A. 執行緒1持有鎖A並等待鎖B,執行緒2持有鎖B並等待鎖A

死結是指多個執行緒各自持有資源,同時等待其他執行緒持有的資源,使得沒有任何一方能繼續前進的狀態。在此例中,執行緒1等待B被釋放,執行緒2等待A被釋放,但雙方都不放開自己的鎖,所以會永遠停住。由於是在不使用CPU的情況下停住,從外部看來處理就像凍結了一樣。

  • A. 正確。彼此持續等待對方而無法前進。
  • B. 那是資料競爭。
  • C. 這是沒有問題的一般用法。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 在使用多把鎖的程式中,防止死結最常見的方法為下列何者?
  2. 記憶體一致性模型(memory consistency model)所規定的是下列何者?
  3. 關於循序一致性(sequential consistency),下列說明何者正確?
  4. 將上方的兩個執行緒在不同的核心上同時執行(假設編譯器不進行重新排序)。下列哪一個結果在循序一致性下不會發生,但在x86等實際的CPU上可能發生?
  5. 關於x86的記憶體一致性模型(TSO,Total Store Order,全域儲存順序)的特徵,下列何者正確?

這個領域的比較