多核心與同步

比較以一把鎖保護整個大型資料結構的「粗粒度鎖」,與以不同的鎖保護各個部分的「細粒度鎖」,下列說明何者正確?

  1. A粗粒度的鎖無論何時平行度都比較高
  2. B改用細粒度的鎖後,鎖的數量會減少
  3. C細粒度讓多個執行緒能同時使用不同的部分,平行度較高,但設計較複雜,死結的風險也會增加
查看答案與解析

正確答案:C. 細粒度讓多個執行緒能同時使用不同的部分,平行度較高,但設計較複雜,死結的風險也會增加

粗粒度鎖雖然簡單而不易出錯,但連使用無關部分的執行緒之間也會彼此等待,所以即使核心增加也不容易變快。若採用像雜湊表依每個桶(bucket)分開上鎖這樣的細粒度,就能同時操作不同的部分。不過需要取得多把鎖的情況會增加,取得順序的管理與鎖本身的負擔都會成為問題。

  • A. 在粗粒度鎖中,一次只有一個執行緒能進入。
  • B. 鎖的數量會增加。
  • C. 正確。要在簡單性與平行度之間取得平衡來選擇。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 關於無鎖(lock-free)演算法的性質,下列何者正確?
  2. 關於臨界區段(critical section),下列說明何者正確?
  3. 關於平行程式中使用的屏障同步(barrier synchronization),下列說明何者正確?
  4. 64個核心持續同時以原子指令更新一個共用計數器時,即使增加核心也不會變快。其主要原因為下列何者?
  5. 關於NUMA(非均勻記憶體存取)系統,下列說明何者正確?

這個領域的比較