一,什么是死锁?
两个或者多个互相竞争共享资源的线程,因为互相等待,导致‘永久’阻塞的现象
二,产生死锁的原因?
同时满足4个条件
互斥条件:共享资源x和y只能被一个线程占用,且等待。
线程1已经取得共享资源x,在占用共享资源y的时候,不释放共享资源x
不可抢占,其他线程不能抢占线程1占有的共享资源x
循环等待:线程1 等待线程2占有的共享资源,线程2等待线程1的
三,怎么避免死锁?
打破其中任何一个条件
1.线程互斥没法解决,本身就是解决线程安全的
2. 占用且等待,可以申请一次性获取资源,这样就不用等待了
3.不可抢占 已经占用部分共享资源的,进一步申请其他资源时,
申请不到就释放已经占用的资源
4.循环等待 按照顺序(资源有线行顺序,先申请序号小的再申请序号大的)
申请资源来进行预防
死锁是指两个或多个线程因互相等待资源而形成的僵局。产生死锁需满足互斥、占用并等待、不可抢占和循环等待四个条件。为避免死锁,可采取一次性申请所有资源、资源有序分配等策略。了解这些原理有助于防止程序中出现死锁问题。

被折叠的 条评论
为什么被折叠?



