1. 程式人生 > >作業系統中 訊號量和自旋鎖的區別

作業系統中 訊號量和自旋鎖的區別

訊號量:

訊號量作為在多核和單核作業系統中都廣泛使用的一種處理機制,在處理衝突問題上有重要作用。

訊號量僅僅是與一個數據結構有關的計數器,所有核心執行緒在試圖訪問這個資料結構之前,都需要檢查這個訊號量,可以把每個訊號量看成一個物件。

組成如下:

  • 一個整數變數
  • 一個等待程序的連結串列
  • 兩個原子方法down()和up()

down()對於訊號量的值-1,up+1,如果新的值小於0,就把正在執行的程序加入到這個訊號量連結串列,然後阻塞該程序。如果大於等於0,就啟用這個訊號量連結串列中的一個或者多個程序。

自旋鎖:

自旋鎖在多處理器作業系統中比較常見,自旋鎖和訊號量類似,當一個程序發現鎖被另一個程序佔用時,他就不斷呈現出“旋轉”等待狀態直到鎖開啟。

自旋鎖在單處理器無效。