多核心與同步

下列何者是最不適合使用自旋鎖的情境?

  1. A持有鎖的時間很長,等待的執行緒白白持續占用CPU的情境
  2. B持有鎖的時間只有數十奈秒,非常短的情境
  3. C在作業系統核心內,無法休眠的處理情境
查看答案與解析

正確答案:A. 持有鎖的時間很長,等待的執行緒白白持續占用CPU的情境

以自旋鎖等待的執行緒,在鎖被釋放之前會持續使用CPU。若持有鎖的時間很長,那段CPU時間就全部浪費,也會妨礙其他執行緒的執行。尤其只有一個核心時,除非持有鎖的執行緒被執行,否則鎖不會被釋放,所以等待會持續到時間配額用完為止。長時間的等待應使用休眠等待的互斥鎖,也有先自旋一小段時間再休眠的方式。

  • A. 正確。這種情況下休眠等待的鎖比較有效率。
  • B. 正是時間短的時候適合自旋鎖。
  • C. 在無法休眠的情境中會使用自旋鎖。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 在自旋鎖中,不直接用原子指令去改寫鎖的變數,而是平時以一般的讀取等待鎖被釋放,只有看到鎖空出來時才使用原子指令(test-and-test-and-set),其理由下列何者正確?
  2. 比較互斥鎖(休眠等待的鎖)與自旋鎖,下列說明何者正確?
  3. 下列何者是死結(deadlock)的例子?
  4. 在使用多把鎖的程式中,防止死結最常見的方法為下列何者?
  5. 記憶體一致性模型(memory consistency model)所規定的是下列何者?

這個領域的比較