日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是死锁,产生的原因,防止死锁的办法

發布時間:2024/10/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是死锁,产生的原因,防止死锁的办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是死鎖?

操作系統中有若干進程并發執行,它們不斷申請、使用、釋放系統資源,雖然系統的進程協調、通信機構會對它們進行控制,但也可能出現若干進程都相互等待對方釋放資源才能繼續運行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,都會原地等待永遠不會發生的條件,系統處于停滯狀態,這就是死鎖。

產生的原因

  • 因為系統資源不足。
  • 進程運行推進的順序不合適。
  • 資源分配不當等。
  • 產生死鎖的必要條件

  • 互斥條件:一個資源每次只能被一個進程使用。
  • 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
  • 不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
  • 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。
  • 防止死鎖的辦法

  • 多個線程需要相同的鎖時,保持加鎖順序一致。
  • 設置加鎖時限,若一個線程沒有在給定的時限內成功獲得所有需要的鎖,則會進行回退并釋放所有已經獲得的鎖,然后等待一段隨機的時間再重試。
  • 死鎖檢測,當線程 A 請求鎖失敗之后,會在記錄各個線程占用了哪些鎖的小冊子中查找該鎖的占有者(線程 B ),再遍歷線程 B 所占用的鎖中是否包括線程 A 所占用的鎖,從而可以判斷出當前這種狀態是否是死鎖。
  • 已判斷死鎖之后該怎么辦?

  • 已發生死鎖的線程釋放所有鎖并回退,等待一段隨機時間之后再重新開始。
  • 按照線程優先級,僅對幾個線程進行釋放鎖和回退操作。若線程都是平級的,則在發生死鎖的情況下,隨機對這些線程賦予不同的優先級。
  • ?

    (SAW:Game Over!)

    總結

    以上是生活随笔為你收集整理的什么是死锁,产生的原因,防止死锁的办法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。