多核心與同步
下列何者是死結(deadlock)的例子?
- A執行緒1持有鎖A並等待鎖B,執行緒2持有鎖B並等待鎖A
- B兩個執行緒未經同步就改寫同一個變數,導致值被破壞
- C一個執行緒取得鎖後立刻釋放
查看答案與解析
正確答案:A. 執行緒1持有鎖A並等待鎖B,執行緒2持有鎖B並等待鎖A
死結是指多個執行緒各自持有資源,同時等待其他執行緒持有的資源,使得沒有任何一方能繼續前進的狀態。在此例中,執行緒1等待B被釋放,執行緒2等待A被釋放,但雙方都不放開自己的鎖,所以會永遠停住。由於是在不使用CPU的情況下停住,從外部看來處理就像凍結了一樣。
- A. 正確。彼此持續等待對方而無法前進。
- B. 那是資料競爭。
- C. 這是沒有問題的一般用法。