多核心與同步

比較互斥鎖(休眠等待的鎖)與自旋鎖,下列說明何者正確?

  1. A互斥鎖在等待期間會讓出CPU,所以適合長時間等待,但休眠與喚醒需要作業系統的額外負擔
  2. B互斥鎖在等待期間也會持續占用CPU,所以只能用於短時間的等待
  3. C互斥鎖與自旋鎖是相同的東西,只是名稱不同
查看答案與解析

正確答案:A. 互斥鎖在等待期間會讓出CPU,所以適合長時間等待,但休眠與喚醒需要作業系統的額外負擔

互斥鎖在取不到鎖時,會讓執行緒進入等待狀態並把CPU讓給其他執行緒,鎖被釋放時再由作業系統喚醒。由於等待期間不會浪費CPU,適合長時間的等待,但休眠、喚醒的處理與情境切換(context switch)需要數微秒左右。實際的函式庫中的互斥鎖,會先自旋一小段時間再休眠,結合了兩者的優點。

  • A. 正確。依等待時間的長短來區分使用。
  • B. 那是自旋鎖的特徵。
  • C. 等待的方式不同。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 下列何者是死結(deadlock)的例子?
  2. 在使用多把鎖的程式中,防止死結最常見的方法為下列何者?
  3. 記憶體一致性模型(memory consistency model)所規定的是下列何者?
  4. 關於循序一致性(sequential consistency),下列說明何者正確?
  5. 將上方的兩個執行緒在不同的核心上同時執行(假設編譯器不進行重新排序)。下列哪一個結果在循序一致性下不會發生,但在x86等實際的CPU上可能發生?

這個領域的比較