鎖的分類

  1. 從線程是否需要鎖定同步資源,分爲
    樂觀鎖(互斥同步鎖)
    – 可以簡單理解爲通常需要版本號控制
    – 舉例:如git push
    – 適合:併發多讀少寫的情況
    悲觀鎖(非互斥同步鎖)
    – 修改數據時把數據鎖住別的線程無法訪問改變
    – 缺點:可能會導致永久阻塞
    – 舉例:如數據庫select xxx for update
    –適合:臨界區有IO操作、代碼複雜、競爭激烈,併發多寫入,避免大量自旋鎖消耗。
  2. 多線程下是否可以共享一把鎖,分爲
    共享鎖
    獨佔鎖
  3. 多線程下是否需要排隊,分爲
    公平鎖
    非公平鎖
  4. 等待資源是是否自阻塞,分爲
    自旋鎖
    非自旋鎖
  5. 同一個線程是否可以重複獲得一把鎖,分爲
    可重複鎖
    不可重複鎖
  6. 是否可中斷
    可中斷鎖
    不可中斷鎖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章