死锁介绍

死锁

什么是死锁?

互相拿到对方的锁,同时又不能放弃当前的锁。指相互之间竞争相同资源的线程因为相互等待而导致永久阻塞。

死锁

死锁发生的原因

互 占 不 循:

  1. 斥: 共享资源x和y只能被一个线程占用
  2. 有且等待:占有且等待,线程 T1 已经取得共享资源 X,在等待共享资源 Y 的时候,不释放共享资源 X;
  3. 可抢占:其他线程不能强行抢占线程 T1 占有的资源;
  4. 环等待: 线程 T1 等待线程 T2 占有的资源,线程 T2 等待线程 T1 占有的资源,就是循环等待。

避免死锁的措施

上面说到发生死锁必须同时满足四个条件,那么,我们破坏其中一个条件,就可以解决死锁的问题。如果已经发生了死锁,一般没有什么好的方法来解决,只能通过重启应用,所以如果要解决死锁问题,最好的方式就是提前规避。

首先,我们肯定不能去破坏第一个条件,锁的作用就是要互斥。所以,只能去破坏其他三个条件。

posted @ 2023-03-06 09:43  会飞啦  阅读(45)  评论(0)    收藏  举报