一,什么是死锁?

两个或者多个互相竞争共享资源的线程,因为互相等待,导致‘永久’阻塞的现象

二,产生死锁的原因?

同时满足4个条件
互斥条件:共享资源x和y只能被一个线程占用,且等待。
线程1已经取得共享资源x,在占用共享资源y的时候,不释放共享资源x
不可抢占,其他线程不能抢占线程1占有的共享资源x
循环等待:线程1 等待线程2占有的共享资源,线程2等待线程1的

三,怎么避免死锁?

打破其中任何一个条件

1.线程互斥没法解决,本身就是解决线程安全的2. 占用且等待,可以申请一次性获取资源,这样就不用等待了3.不可抢占 已经占用部分共享资源的,进一步申请其他资源时,
申请不到就释放已经占用的资源4.循环等待 按照顺序(资源有线行顺序,先申请序号小的再申请序号大的)
申请资源来进行预防

什么是死锁怎么避免?相关推荐

  1. Python 多线程总结(2)— 线程锁、线程池、线程数量、互斥锁、死锁、线程同步

    主要介绍使用 threading 模块创建线程的 3 种方式,分别为: 创建 Thread 实例函数 创建 Thread 实例可调用的类对象 使用 Thread 派生子类的方式 多线程是提高效率的一种 ...

  2. 操作系统学习笔记 第三章:处理机调度与死锁(王道考研)

    本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...

  3. 死锁产生的原因和解锁的方法

    产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用. (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放. (3) 不剥夺条件:进程已获得的资源,在末使 ...

  4. 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决

    Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty\j ...

  5. mysql 1061原因_MySQL死锁问题分析及解决方法实例详解(转)

    出处:http://www.jb51.net/article/51508.htm MySQL死锁问题是很多程序员在项目开发中常遇到的问题,现就MySQL死锁及解决方法详解如下: 1.MySQL常用存储 ...

  6. GIL+死锁与递归锁+信号量+event事件

    GIL全局解释器锁: GIL本质就是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL,同一进程内的多个线程 必须抢到GIL之后才能使用Cpython解释器来执行自己的代码,即同一进程下的多个线 ...

  7. Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死

    Java本质上还是离不开操作系统,一来Java源码是用C/C++实现的,二来java进程还是需要依附于操作系统和硬件资源,有时候一些问题是操作系统级别导致的,下面的整个事件是源自一则真实的线上案例. ...

  8. bug诞生记——信号(signal)处理导致死锁

    这个bug源于项目中一个诡异的现象:代码层面没有明显的锁的问题,但是执行时发生了死锁一样的表现.我把业务逻辑简化为:父进程一直维持一个子进程.(转载请指明出于breaksoftware的csdn博客) ...

  9. 死锁问题分析的利器——valgrind的DRD和Helgrind

    在<DllMain中不当操作导致死锁问题的分析--死锁介绍>一文中,我们介绍了死锁产生的原因.一般来说,如果我们对线程同步技术掌握不牢,或者同步方案混乱,极容易导致死锁.本文我们将介绍如何 ...

  10. DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)

    之前几篇文章主要介绍和分析了为什么会在DllMain做出一些不当操作导致死锁的原因.本文将总结以前文章的结论,并介绍些DllMain中还有哪些操作会导致死锁等问题.(转载请指明出于breaksoftw ...

最新文章

  1. 游戏框架View以及简单的运用
  2. 软件常见故障的现象、故障排除的方法
  3. [安全相关]其他安全漏洞
  4. idea打开项目慢怎么办?
  5. pdfbox 第一页加内容_你用代码做过哪些很酷/有趣的事?
  6. res_config_mysql和chan_sip模块的加载分析
  7. mysql支持表情输入_让MySQL支持Emoji表情 mysql 5.6
  8. 微软发动图明示新一代操作系统Windows 11
  9. 搭建svn,创建svn项目
  10. c语言 什么是指针变量,c语言指针详解:什么是指针?
  11. jeesit1.27使用(2)-图片处理
  12. 计算机报 论文,计算机学院毕业设计(论文)题目上报.doc
  13. Unity显示FPS帧率
  14. 考研日语线上笔记(六):完型专项篇
  15. 游戏对战平台编写流程
  16. 计算个股CAPM模型和Fama-French五因子模型(by Stata16MP)
  17. XAVIER CMDS
  18. python 妹子图抓取
  19. Apache Ant安装及使用
  20. opencv java 车牌定位_用opencv实现在图像找到车牌号并检测出车牌号

热门文章

  1. patchelf修改rpath
  2. Flutter:Could not find the correct Provider
  3. 从头到尾把事做成,要有多难?
  4. 气质的培养(哈佛管理世界)
  5. java地狱_解决java回调地狱的方法
  6. python翻转函数_Python翻转单词顺序
  7. 【​观察】D轮累计融资6亿元之后 新氧开启医美行业赋能之路
  8. 保障汽车行业的软件供应链安全
  9. python读取txt中的一列称为_Python读取文本中的数字
  10. 3D数学-裁剪空间与透视投影矩阵的推导