爲什麼公平鎖的性能低於非公平鎖

非公平鎖意味着可以插隊。那爲什麼性能會更好呢?

我們必須先知道,在恢復一個被掛起的線程與該線程真正開始運行之間存在着嚴重的延遲。

 舉個例子,a線程獲取到了鎖,現在b線程來請求鎖。a線程釋放鎖喚醒b線程。b線程恢復運行狀態。這裏需要時間。如果允許插隊,c線程剛剛好在a釋放前請求鎖。可能在c釋放完鎖後。b線程才真正開始運行起來。

其實就是說切換上下文的開銷是比較大的。有時候我們可以用短時間的輪詢獲取鎖會更快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章