首页IT科技什么是死锁?请给出预防死锁的若干方法(什么是死锁?如何避免死锁?)

什么是死锁?请给出预防死锁的若干方法(什么是死锁?如何避免死锁?)

时间2025-08-05 11:25:26分类IT科技浏览4791
导读:概念...

概念

线程死锁描述的是这样一种情况:多个线程同时被阻塞            ,它们中的一个或者全部都在等待某个资源被释放            。由于线程被无限期地阻塞                     ,因此程序不可能正常终止                     。

我和同学都打扫卫生      ,我拿着扫帚等他的簸箕         ,他拿着簸箕等我的扫帚

产生条件

互斥条件:同一时刻一线程只能占用一个资源      。

同一时刻                     ,我拿着扫帚          ,他拿着簸箕         。

请求与保持:一个线程因请求资源而阻塞时      ,对已获得的资源保持不放                     。

我在等他的簸箕                    ,但我不会让出我的扫帚

不可剥夺:已获得的资源在为使用完时              ,其他线程不能强行剥夺          。

我拿着扫帚   ,但是我不能去强抢他拿的簸箕

循环等待

我拿着扫帚等他的簸箕                   ,他拿着簸箕等我的扫帚                  ,形成闭环

如何避免

打破产生条件即可

破坏 互斥条件:无法被破坏,因为锁就是通过互斥来解决线程安全问题 破坏 请求与保持条件:一次申请所有需要的资源 破坏 不可剥夺条件:如果线程已占用部分资源               ,且他还要申请其他资源                     ,如果申请不到   ,就主动释放它自己占有的资源 破坏 循环等待条件:按照顺序申请资源            ,释放资源则逆序

参考:JavaGuide

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
phython占位符(python有哪些常见的占位符)