死锁
程序当中有一个执行流没有释放锁资源,会导致其他想要获取该锁资源的执行流陷入阻塞等待,这种情况被称为死锁
程序当中每一个执行流都占有一把互斥锁,但是由于各个执行流在占有所资源的的情况下,还想申请对方的锁,这种情况被称为死锁
死锁的四个必要条件
互斥条件:每一把锁只能被一个执行流占有
保持与等待条件:当前执行流已经占有锁资源,但是还想去申请新的互斥锁
循环等待条件:若干个执行流在请求所资源形成了一个闭环
不可剥夺:只有当前拿着互斥锁的线程可以释放该互斥锁
避免死锁的方法:
1.破坏必要条件
2.加锁顺序一致
3.避免所资源没被释放
4.一次性分配资源,对于执行力流完成某件事需要所资源一次分配完成,防止其他执行流占用,进行阻塞等待
死锁
最新推荐文章于 2024-09-25 08:54:19 发布