多线程中的死锁定位及预防措施(Banker's Algorithm)
发布时间
阅读量:
阅读量
什么是死锁:
死锁现象通常发生在两个及以上线程运行期间,因争夺有限资源而产生相互阻塞的情况。在缺乏外部干预的前提下,这些线程将无法继续执行,系统因此进入死锁状态。
死锁的危害分析
- 导致程序无法正常执行:由于死锁现象的发生,程序流程被阻断,无法继续后续操作。
- 资源浪费问题:当死锁出现时,至少两个线程将处于阻塞状态,造成系统资源的无效占用。
- 引发连锁死锁:处于死锁状态的线程持续持有锁资源,使得其他试图获取该锁的线程也陷入死锁,从而形成类似多米诺骨牌的连锁反应。
死锁产生的原因:
- 由争夺有限资源而导致死锁现象的出现;
- 由于进程执行顺序安排不合理而引发死锁情况。
出现死锁的必要条件:
- 互斥条件:资源在同一时间仅允许被单一线程占用。 ==》 资源
- 请求与保持条件:当一个线程在申请资源过程中被阻断时,其先前已获得的资源仍维持占有状态而不予释放。 ==》 线程
- 不可剥夺条件:线程在尚未完成资源使用前,所持有的资源无法被强制回收,必须由该线程自行完成释放操作。
- 循环等待条件:多个线程之间形成一种首尾相连的闭环式资源等待结构。

还没有任何评论哟~
