死鎖
死鎖產生的條件
- 互斥條件:指線程對已經獲取到的資源進行排它性使用,即該資源同時只由一個線程佔用,若是此時還有其餘線程請求獲取該資源,則請求者只能等待,直至佔有資源的線程釋放該資源。
- 請求並持有條件:指一個線程已經持有了至少一個資源,但又提出了新的資源請求,而新資源已經被其餘線程佔有,因此當前線程被阻塞,但阻塞的的同事並不釋放已經獲取的資源。
- 不可剝奪條件:指線程獲取到的資源在本身使用完以前不能被其餘線程搶佔,只有本身使用完畢才由本身釋放該資源。
- 環路等待條件:指在發生死鎖時,必然存在一個線程—資源的環形鏈,即線程集合{T0, T1,T2, ..., Tn} 中的T0正在等待一個T1佔用的資源,T2在等待T2佔用的資源, Tn正在等待T0佔用的資源。
避免死鎖
經過破壞資源的請求並持有條件和環路等條件。線程
歡迎關注本站公眾號,獲取更多信息