当前位置: 首页 > news >正文

死锁

什么是死锁?

  • 死锁是指两个或多个进程(或线程)在执行过程中,因竞争资源而造成的一种相互等待的状态,如果没有外力干预,这些进程将 永远无法继续执行。
通俗理解:
  • 你拿着我需要的资源,我拿着你需要的资源,我们都不愿意先放手,于是一直卡住。

死锁的典型例子

线程 A:拿到锁 L1 → 等待锁 L2
线程 B:拿到锁 L2 → 等待锁 L1
结果:
A 等 B,B 等 A,形成死锁

死锁产生的必要条件(缺一不可):

  1. 互斥条件(Mutual Exclusion):资源同一时刻只能被一个进程占用。如:互斥锁、打印机、数据库行锁
  2. 请求并保持条件(Hold and Wait):一个进程已经持有了至少一个资源,同时还在等待获取其他被占用的资源。在此期间,该进程不会释放已经持有的资源。
  3. 不可剥夺条件(No Preemption):已分配给进程的资源 不能被强制剥夺,只能由进程自己释放。
  4. 循环等待条件(Circular Wait):存在一个进程资源等待环,如:A → B → C → A

如何避免死锁?

思路:破坏死锁的 4 个必要条件之一即可
  1. 破坏“循环等待” —— 最常用,资源统一按顺序申请
所有线程:先申请 L1,再申请 L2

实战中最常见、最有效
2. 破坏“请求并保持”

  • 一次性申请所有需要的资源
  • 或申请不到就全部释放
  1. 破坏“不可剥夺”
  • 设置超时
  • 超时未获取锁就主动释放已有资源
    (如数据库锁超时、Redis 锁超时)
  1. 破坏“互斥”(较少)
  • 使用无锁结构
  • 使用读写锁(读共享)

在不同场景下的死锁

  1. 操作系统
  • 进程竞争 CPU、内存、IO
  • 银行家算法(避免死锁)
  1. 多线程(Python / Java)
lock1.acquire()
lock2.acquire()

若顺序不一致 → 死锁
3. 数据库(MySQL 常考)

事务 A:锁行 1 → 请求行 2
事务 B:锁行 2 → 请求行 1

InnoDB 会检测并 主动回滚一个事务

http://www.jsqmd.com/news/113182/

相关文章:

  • 手写数字识别:从零搭建神经网络 - 实践
  • Java新特性-(二)Java基础语法 - 努力-
  • Java新特性-Java语法 - 努力-
  • 升级二进制kubernetes集群(小版本升级)
  • 深耕二十载 赋能全领域|河南山特UPS电源领军品牌艾佩斯商贸 (1) - 朴素的承诺
  • 深耕二十载 电源护安全|河南艾佩斯打造全场景电源解决方案服务商 - 朴素的承诺
  • 现在我如何使用 Google Antigravity
  • AI也会说谎?揭秘可靠RAG让智能助手不再胡说八道
  • 科士达UPS电源核心服务商 河南艾佩斯 二十载机房电源解决方案专家 - 朴素的承诺
  • 计算机辅助证明与AI在数学领域的信任变革
  • Day6 14. 句子缩写 -卡码网C++基础课
  • why name should be short
  • 科华UPS电源优选服务商:河南艾佩斯20年深耕,全国服务覆盖 - 朴素的承诺
  • 实用指南:VirtualBox 6.1.50 新建 Windows 7 Ultimate SP1 64位虚拟机完整流程指南
  • 河南山特UPS电源标杆|艾佩斯20年专注全场景电源解决方案 - 朴素的承诺
  • 2025-2026酶标仪知名品牌/优质供应商:采购必看 - 品牌推荐大师1
  • 小红书关键词爬取
  • 2025年口碑好的河南UPS电源厂家最新权威实力榜:河南艾佩斯商贸引领行业标杆 - 朴素的承诺
  • 2025中国电线电缆品牌推荐:全场景电力传输的优质之选 - 黑马榜单
  • 寒假/日常实习经历
  • 为什么员工绩效评估不起作用
  • 智能创新:深圳市财付通网络金融小额贷款有限公司和大湾区客服联动,科技服务未来如你所愿! - 资讯焦点
  • 奇正沐古:靠谱的汽车用品营销战略咨询公司 - 资讯焦点
  • 2025年医生推荐的静脉曲张袜十大品牌 - 资讯焦点
  • 实用指南:用VSCode打造高效AI开发环境:从配置到实战
  • 2025 四川破碎机厂家怎么选?7 大靠谱厂商推荐 + 超实用选购指南 - 资讯焦点
  • 权威第三方给出的品牌营销策划公司排行榜 - 资讯焦点
  • 联动创新:重庆美团三快小额贷款有限公司与大湾区书写未来科技故事! - 资讯焦点
  • 2025最新;福州奇富网络网络小额贷款有限公司客服AI数字公司推荐,技术斌能数字化转型 - 资讯焦点
  • 10373_基于Springboot的云备份系统软件