一.什么是死锁

死锁问题是两个或两个以上线程,争夺同一个资源导致互相等待,在没有外部干扰的情况下一直处于堵塞状态

二.死锁产生的条件

死锁只有同时满足互斥、持有并等待、不可剥夺、环路等待这四个条件的时候才会发生。

三.如何避免死锁

因为产生死锁必须同时满足以上的四个条件所以避免死锁我们只需要破坏其中一个条件即可

1.互斥:互相争夺的资源x,y只能被一个线程所占有

破坏方法:是锁本身的一个特征不可被破坏

2.持有并等待:线程T1已经获得的共享资源x,在等待共享资源y的时候不释放共享资源x

破坏方法:在第一次请求资源的时候一次请求全部资源

3.不可剥夺条件:其他线程不能强行抢占线程T1已经占有的资源,

破坏方法:占用其他资源的线程在申请不到其他资源而陷入等待的时候主动结束线程从而释放资源

4.环路等待:线程T1在等待线程T2释放已占有的资源x,线程T2在等待线程T1释放已占有的资源y

破坏方法:按照一定的顺序去获取资源

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐