死锁

死锁产生的条件

  • 互斥条件:指线程对已经获取到的资源进行排它性使用,即该资源同时只由一个线程占用,如果此时还有其他线程请求获取该资源,则请求者只能等待,直至占有资源的线程释放该资源。
  • 请求并持有条件:指一个线程已经持有了至少一个资源,但又提出了新的资源请求,而新资源已经被其他线程占有,所以当前线程被阻塞,但阻塞的的同事并不释放已经获取的资源。
  • 不可剥夺条件:指线程获取到的资源在自己使用完之前不能被其他线程抢占,只有自己使用完毕才由自己释放该资源。
  • 环路等待条件:指在发生死锁时,必然存在一个线程—资源的环形链,即线程集合{T0, T1,T2, ..., Tn} 中的T0正在等待一个T1占用的资源,T2在等待T2占用的资源, Tn正在等待T0占用的资源。

避免死锁

通过破坏资源的请求并持有条件和环路等条件。

原文地址:https://www.cnblogs.com/Godfunc/p/11164110.html