多核心與同步
下列何者是最不適合使用自旋鎖的情境?
- A持有鎖的時間很長,等待的執行緒白白持續占用CPU的情境
- B持有鎖的時間只有數十奈秒,非常短的情境
- C在作業系統核心內,無法休眠的處理情境
查看答案與解析
正確答案:A. 持有鎖的時間很長,等待的執行緒白白持續占用CPU的情境
以自旋鎖等待的執行緒,在鎖被釋放之前會持續使用CPU。若持有鎖的時間很長,那段CPU時間就全部浪費,也會妨礙其他執行緒的執行。尤其只有一個核心時,除非持有鎖的執行緒被執行,否則鎖不會被釋放,所以等待會持續到時間配額用完為止。長時間的等待應使用休眠等待的互斥鎖,也有先自旋一小段時間再休眠的方式。
- A. 正確。這種情況下休眠等待的鎖比較有效率。
- B. 正是時間短的時候適合自旋鎖。
- C. 在無法休眠的情境中會使用自旋鎖。