多核心與同步
比較以一把鎖保護整個大型資料結構的「粗粒度鎖」,與以不同的鎖保護各個部分的「細粒度鎖」,下列說明何者正確?
- A粗粒度的鎖無論何時平行度都比較高
- B改用細粒度的鎖後,鎖的數量會減少
- C細粒度讓多個執行緒能同時使用不同的部分,平行度較高,但設計較複雜,死結的風險也會增加
查看答案與解析
正確答案:C. 細粒度讓多個執行緒能同時使用不同的部分,平行度較高,但設計較複雜,死結的風險也會增加
粗粒度鎖雖然簡單而不易出錯,但連使用無關部分的執行緒之間也會彼此等待,所以即使核心增加也不容易變快。若採用像雜湊表依每個桶(bucket)分開上鎖這樣的細粒度,就能同時操作不同的部分。不過需要取得多把鎖的情況會增加,取得順序的管理與鎖本身的負擔都會成為問題。
- A. 在粗粒度鎖中,一次只有一個執行緒能進入。
- B. 鎖的數量會增加。
- C. 正確。要在簡單性與平行度之間取得平衡來選擇。