多核心與同步
關於無鎖(lock-free)演算法的性質,下列何者正確?
- A即使某個執行緒中途停住,其他執行緒中至少有一個能繼續推進處理
- B所有執行緒一定能在固定次數的步驟內完成處理
- C完全不使用原子指令就更新共用資料
查看答案與解析
正確答案:A. 即使某個執行緒中途停住,其他執行緒中至少有一個能繼續推進處理
使用鎖時,若持有鎖的執行緒因中斷或優先順序低而停住,其他所有人都得等待。無鎖演算法以CAS等直接更新共用資料,並設計成某個執行緒失敗而重做,只會發生在其他某人成功的時候。因此就整體而言,總會有某個執行緒在推進。不過要正確地製作並不容易,也必須留意ABA問題等。
- A. 正確。不會有持有鎖的執行緒停住所造成的問題。
- B. 那是更強的無等待(wait-free)性質。
- C. 是使用CAS等原子指令來製作的。