什么是死锁和如何处理死锁

原创 2018年04月16日 20:49:09

(1)什么是死锁呢?

        死锁是指在线程执行中两个或多个线程相互持有对方所需要的资源,导致循环等待,无法向下执行.

(2)死锁是怎样产生的呢?

        主要原因如下:

                1.因为系统资源不足

                2.进程推进顺序不合理

                3.资源分配不当

(3)产生死锁的必要条件:

        1 互斥条件:一个资源每次只能被一个进程使用。

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

        3 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

        4 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

(4)处理死锁的基本方法

        1.预防死锁:通过设置一些限制条件,去破坏产生死锁的必要条件

        2.避免死锁:在资源分配过程中,使用某种方法避免系统进入不安全的状态,从而避免发生死锁

        3.检测死锁:允许死锁的发生,但是通过系统的检测之后,采取一些措施,将死锁清除掉

        4.解除死锁:该方法与检测死锁配合使用

什么是死锁和如何解决死锁

概述死锁的特征和解决方法
  • DT_Zhangshuo
  • DT_Zhangshuo
  • 2016-11-27 21:14:18
  • 10079

什么是死锁?如何避免死锁?

所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。...
  • joejames
  • joejames
  • 2014-07-19 14:40:13
  • 46223

什么是死锁,如何避免死锁?

线程A需要资源X,而线程B需要资源Y,而双方都掌握有对方所要的资源,这种情况称为死锁(deadlock),或死亡拥抱(the deadly embrace)。 在并发程序设计中,死锁 (dead...
  • u010419967
  • u010419967
  • 2015-05-22 14:16:47
  • 2833

什么是死锁,简述死锁发生的四个必要条件,如何避免死锁,解除死锁

1.死锁:如果一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件,那么该组进程是死锁的。2.产生死锁的原因:(1)竞争不可抢占性资源。(2)竞争可消耗资源。当系统中供多个进程共享的资...
  • yishouwangnian
  • yishouwangnian
  • 2016-09-30 09:05:15
  • 4493

死锁,死锁产生的原因,产生死锁的必要条件和解决死锁的方法

死锁:指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再 向前推进。 安全状态与不安全状态:安全状态指系统能按某种进程顺序来为每个进程分配其所需资源,直 至最大需求...
  • shengabc
  • shengabc
  • 2015-08-09 20:47:21
  • 3510

Mysql之死锁解读

死锁是指两个或多个事务在同一资源上互相占用,并请求加锁时,而导致的恶性循环现象。当多个事务以不同顺序试图加锁同一资源时,就会产生死锁。任何时间,多个事务同时加锁同一资源,一定产生死锁。例如,设想下列两...
  • xuyanlu
  • xuyanlu
  • 2013-04-20 21:59:10
  • 1908

数据库常见死锁原因及处理

数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。...
  • qq_16681169
  • qq_16681169
  • 2017-07-08 10:22:40
  • 9963

什么是死锁,简述死锁发生的四个必要条件,如何避免与预防死锁

什么是死锁死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使...
  • jhonz
  • jhonz
  • 2016-10-11 11:09:42
  • 12496

如何处理MySql死锁

当MySql发生死锁后,InnoDB将自动检测事务死锁,并立刻回滚,然后返回错误。回滚通常选择undo量最小的事务。...
  • Revivedsun
  • Revivedsun
  • 2017-04-30 23:56:25
  • 2164

多线程死锁的产生和解决

什么是死锁线程死锁一般是发生在多个线程的多个锁之间,比如线程A拥有临界区对象LockA的所有权,等待临界区对象LockB;线程B拥有临界区对象LockB的所有权,等待临界区对象LockA;由于两个线程...
  • xiao3404
  • xiao3404
  • 2017-05-15 22:56:41
  • 1915
收藏助手
不良信息举报
您举报文章:什么是死锁和如何处理死锁
举报原因:
原因补充:

(最多只允许输入30个字)