多核心與同步

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

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

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

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

  • A. 正確。不會有持有鎖的執行緒停住所造成的問題。
  • B. 那是更強的無等待(wait-free)性質。
  • C. 是使用CAS等原子指令來製作的。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 關於臨界區段(critical section),下列說明何者正確?
  2. 關於平行程式中使用的屏障同步(barrier synchronization),下列說明何者正確?
  3. 64個核心持續同時以原子指令更新一個共用計數器時,即使增加核心也不會變快。其主要原因為下列何者?
  4. 關於NUMA(非均勻記憶體存取)系統,下列說明何者正確?
  5. 在Linux的NUMA系統中常用的首次接觸(first touch)策略(將頁面放在第一次寫入該頁面的執行緒所在節點的記憶體),下列關於需要注意之處的說明何者正確?

這個領域的比較