執行緒的死鎖

2021-08-19 07:07:36 字數 468 閱讀 1304

死鎖的必要條件:

1. 互斥: 每個資源要麼已經分配給了乙個程序,要麼就是可用的;

2. 占有和等待:已經得到了某個資源的程序可以再請求新的資源。

3. 不可搶占:已經分配給乙個程序的資源不能強制性的被搶占,它只能被占有他的程序顯式的釋放;

處理死鎖的方法:

1. 鴕鳥策略:就是忽略死鎖,假裝什麼都沒有發生。

死鎖的檢測:

每種型別乙個資源的死鎖檢測演算法是通過檢測有向圖是否存在閉環來實現的,從乙個節點出發進行深度優先搜尋,對訪問的節點進行標記,如果訪問了已經訪問的節點,就表示有向圖存在閉環,也就是檢測到死鎖的發生。

死鎖的恢復

1. 利用搶占恢復

2. 利用回滾恢復

3. 通過殺死程序恢復

死鎖的預防

1. 破壞互斥條件

2. 破壞占有和等待條件

3. 破壞不可搶占條件

4. 破壞環路等待

執行緒的死鎖

如果乙個程序集合裡面的每個程序都在等待這個集合中的其他乙個程序 包括自身 才能繼續往下執行,若無外力他們將無法推進,這種情況就是死鎖,處於死鎖狀態的程序稱為死鎖程序 乙個簡單的死鎖類 當deadlock類的物件flag 1時 td1 先鎖定o1,睡眠500毫秒 而td1在睡眠的時候另乙個flag 0...

執行緒的死鎖

前天俺們談到了加鎖,但是在使用加鎖的同時又會帶來乙個問題,就是死鎖。什麼叫死鎖?所謂死鎖 是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。那麼為什麼會產生死鎖呢?1.因為系統資源不足。2.程序執行推進的順序不合適。3.資源分配不當。學過...

執行緒的同步,死鎖

同步就是協同步調,按預定的先後次序進 運 如 你說完,我再說。同 字從字 上容易理解為 起動作 其實不是,同 字應是指協同 協助 互相配合。例如 如程序 執行緒同步,可理解為程序或執行緒a和b 塊配合,a執 到 定程度 時要依靠b的某個結果,於是停下來,示意b運 b依 執 再將結果給 a a再繼續操...