什麼是無鎖演算法(Lock-free algorithm)

即使有任一執行緒中途停止,其他執行緒中至少仍有一個能繼續推進處理的演算法性質。以 CAS 等原子指令實作。

日文名稱: ロックフリー

「無鎖演算法(Lock-free algorithm)」出現在1領域的1道練習題中(多核心與同步等)。

這個名詞所屬的領域: 多核心與同步

練習無鎖演算法(Lock-free algorithm)的題目

關於無鎖(lock-free)演算法的性質,下列何者正確?

  1. A即使某個執行緒中途停住,其他執行緒中至少有一個能繼續推進處理
  2. B所有執行緒一定能在固定次數的步驟內完成處理
  3. C完全不使用原子指令就更新共用資料
查看答案與解析

正確答案:A. 即使某個執行緒中途停住,其他執行緒中至少有一個能繼續推進處理

使用鎖時,若持有鎖的執行緒因中斷或優先順序低而停住,其他所有人都得等待。無鎖演算法以CAS等直接更新共用資料,並設計成某個執行緒失敗而重做,只會發生在其他某人成功的時候。因此就整體而言,總會有某個執行緒在推進。不過要正確地製作並不容易,也必須留意ABA問題等。

解析中的「無鎖演算法(Lock-free algorithm)」

出現「無鎖演算法(Lock-free algorithm)」的題目(1題)

  1. 關於無鎖(lock-free)演算法的性質,下列何者正確?

相關名詞

中斷 更新(Refresh) 互斥鎖(Mutex) 比較並交換(Compare-and-swap) 目錄式一致性(Directory-based coherence) 交易式記憶體(Transactional memory) 死結(Deadlock) 自旋鎖(Spinlock) 屏障同步(Barrier synchronization) 原子指令(Atomic instruction)

前往名詞解釋列表