形成死鎖的必要條件(4個)


形成死鎖的4個必要條件:

1、互斥條件:在一段時間內某資源只由一個進程占用。如果此時還有其它進程請求資源,就只能等待,直至占有資源的進程用畢釋放。

2、占有且等待條件:指進程已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它進程占有,此時請求進程阻塞,但又對自己已獲得的其它資源保持不放。

3、不可搶占條件:別人已經占有了某項資源,你不能因為自己也需要該資源,就去把別人的資源搶過來。

4、循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。(比如一個進程集合,A在等B,B在等C,C在等A)。

 

如何避免線程死鎖呢?

1、避免一個線程同時獲得多個鎖;

2、避免一個線程在鎖內同時占用多個資源,盡量保證每個鎖只占用一個資源;

3、嘗試使用定時鎖,使用lock.tryLock(timeout)來替代使用內部鎖機制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM