什么是死锁,如何解决?

news2024/9/24 3:27:22

一、问题解析

死锁是指两个或两个以上的进程(或线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

比如:丈母娘要求先买房才能结婚,但是女婿说先结婚买房

 产生死锁的四个必要条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 占有且等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不可强行占有:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

如何解除死锁

想好解除和预防死锁,就避免4个条件同时发生就行了,一般从以下几个方面入手

破坏不可抢占:设置优先级,使优先级高的可以抢占资源

破坏循环等待:保证多个进程(线程)的执行顺序相同即可避免循环等待。
如执行顺序都是:A->B->C,那就可以避免循环等待。
最常用的避免方法就是破坏循环等待,就是当我们有多个事务的时候,最好让这几个事务的执行顺序相同。
如事务1:A->B->C ,事务2:C->D->A,这种情况就有可能导致死锁。
即事务1占有了A,等待C,而事务2占有了C在等待A。
所以,要避免死锁就把事务2改为:A -> D-> C。


数据库死锁的发生

在数据库中,如果有多个事务并发执行,也是可能发生死锁的。当事务1持有资源A的锁,但是尝试获取资源B的锁,而事务2持有资源B的锁,尝试获取资源A的锁的时候,这时候就会发生死锁的情况。

发生死锁时,会发生如下异常:

Error updating database. Cause: ERR-CODE: [TDDL-4614][ERR_EXECUTE_ON_MYSQL] 

Deadlock found when trying to get lock; 

一般对于数据库的死锁,主要是避免发生并发修改。或者可以考虑保证操作的顺序,比如多个事务都是先操作资源A、再操作资源B,这样就能有效的避免死锁。

二、粉丝福利

我是浮生,一个工作十四年经验的Java程序员!

最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份85W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我
公众号:“ 
灰灰聊架构 ”, 回复暗号:“ 321 ”即可获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网上有哪些正规的兼职副业赚钱平台?分享10类正规的网上兼职赚钱平台,让你在家也能赚钱~

在如今的快节奏社会中,越来越多的人开始寻求兼职副业来增加收入。而随着互联网的普及,网上赚钱平台成为了许多人选择的方式之一。然而,面对众多的网上赚钱平台,我们要如何辨别哪些是正规可靠的呢?在本文中,…

解读:Mint Blockchain 最新路线图,释放 NFT 生态重磅发展计划

作者:Mint Ecosystem 关于 Mint Blockchain:Mint Blockchain 是一个以太坊原生 L2 网络,核心是发展 NFT 生态和产业,促进 NFT 领域的 Mass Adoption 产生。MintCore 团队致力于将 Mint Blockchain 打造成一个围绕服务 NFT 资产的…

6万转高速主轴电机哪个品牌好?

近年来,随着全球科技的迅猛发展,各个工业领域对高精密零件加工的需求日益旺盛,特别是在医疗、航天航空、通讯技术等领域,对工件的精密性要求达到了前所未有的高度。在这样的背景下,高转速,高精密的高速电主…

yolo 算法 易主

标题:YOLOv10: Real-Time End-to-End Object Detection 论文:https://arxiv.org/pdf/2405.14458ethttps%3A//arxiv.org/pdf/2405.14458.zhihu.com/?targethttps%3A//arxiv.org/pdf/2405.14458 源码:https://github.com/THU-MIG/yolov10 分析…

哈夫曼树,哈夫曼编码和线索二叉树

前言 在数据压缩中,如电脑中的压缩软件,哈夫曼编码应用比较广泛,因此被称作最优二叉树。下面时哈夫曼树的一些定义。 哈夫曼树 定义 代码 下面时哈夫曼树的初始化和创建: #include "stdio.h"#define MAXSIZE 5 typedef struct {int weigth;int parent, lchi…

SSRS中使用QRCoder生成二维码

步骤 1.下载QRCoder.dll 下载地址:https://download.csdn.net/download/wjl7126180/89369398 2.使用gacutil.exe安装QRCoder.dll到GAC(Global Assembly Cache) gacutil.exe是全局程序集缓存工具,需要安装.NET Framework才会存在,如果没有…

质量人,你还在等什么?快来六西格玛培训公司充电吧!——张驰咨询

在竞争激烈的商业环境中,质量成为了企业生存和发展的关键。而六西格玛,作为一种全球公认的质量管理方法论,正在成为越来越多企业追求品质革命的重要工具。而六西格玛培训公司,则成为了这场品质革命中,质量人不可或缺的…

SSH秘钥对简化github项目管理(外加Tortoise配置)

文章目录 使用SSH秘钥对简化github项目管理为什么要用密钥对?如何使用SSH方式克隆版本库呢?补充:使用TortoiseGit(小乌龟)快速访问github远程仓库!结尾:喜欢的小伙伴可以点点关注赞哦 使用SSH秘…

四大策略,五大优势!麒麟信安云助力用户实现VMware替换无忧

2023 年 12 ⽉ 11 ⽇,VMware 正式官宣“所有 VMware by Broadcom 解决⽅案向订阅许可证的过渡,并停⽌销售永久许可证、永久产品的⽀持和订阅(SnS)续订以及混合购买计划/订阅购买计划积分(HPP/SPP)”。 202…

根据一棵树的前序遍历与中序遍历构造二叉树(C++)

文章目录 1. 题目描述2. 题目解析 题目来源: 力扣…根据一棵树的前序遍历与中序遍历构造二叉树 1. 题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二…

python清洗苹果产量数据:从字符串到整型的转化

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、使用普通方法清洗数据 1. 创建字典并遍历 2. 示例代码 3. 结果展示 三、使…

教你网站如何免费实现https

想要实现https访问最简单有效的的方法就是安装SSL证书。只要证书正常安装上以后,浏览器就不会出现网站不安全提示或者访问被拦截的情况。下面我来教大家怎么去获取免费的SSL证书,又如何安装证书实现https访问。 一、选择免费SSL证书提供商 有多家机构提…

计算机SCI期刊,中科院2区,IF=5+,收稿范围广泛!

一、期刊名称 CAAI Transactions on Intelligence Technology 二、期刊简介概况 期刊类型:SCI 学科领域:计算机科学 影响因子:5.1 中科院分区:2区 出版方式:开放出版 版面费:$2600 三、期刊简介 期…

在今日头条上写文章:ChatGPT完整使用教程

了解如何充分运用ChatGPT进行创作 简介 在今日头条上发布文章变得越来越方便。本文旨在详细解析如何运用ChatGPT来创作文章,并提供全方位的使用指南及常见问题的答疑。 第一步:基础准备 确保你已注册今日头条账号。 登录ChatGPT并与你的今日头条账号进…

质量源于设计QbD培训的内容有哪些?

质量源于设计QbD培训的内容丰富而深入,旨在帮助企业深入理解并应用QbD理念,提升产品质量和客户满意度。以下是质量源于设计QbD培训的主要内容: 首先,培训将详细介绍QbD的基本概念、核心内容和实施流程。QbD是一种集成的方法&#…

玻璃加工生产线液压比例控制器

玻璃加工生产线广泛应用于自动化中空玻璃的生产、清洗、磨边、上片、除膜、打胶等各个环节,体现了高度的专业化和自动化水平。在玻璃制造过程中,液压升降机用于玻璃板材的升降和定位,确保玻璃在加工过程中的稳定性。液压系统提供的强大而平稳…

基于直接二元搜索的片上偏振分束器设计 (Nature Photonics, 9, 6, (2015))案例复现

时间—2024.6.08 腾讯会议 智能算法驱动的光子学设计与应用

从零教你实现django的前后端分离模式文件上传下载功能实现(2024最新)

文章目录 项目初始化配置具体文件上传下载代码的实现数据库模型类建立 运行测试 项目初始化配置 1.使用pycharm编辑器新建一个django项目 2.Terminal终端下载需要的依赖包 # 和数据库建立连接的依赖包 pip install mysqlclient # 解决跨域问题的依赖包 pip install django-co…

onenav一为导航主题4.05开心版 可保存授权

一款大多数导航网站使用且功能非常全面的导航主题,有能力的情况下还是劝大家支持正版。 演示站:onenav一为导航主题演示站 后台演示 | 演示后台:登录 - onenav一为导航主题演示站 后台演示 后台测试账号获取:演示站后台账号获取…

机器视觉HALCON:3.图像获取,运算,率噪,滤波(边缘),锐化

目录 图像获取生成单通道图像图像运算加法运算减法运算乘法运算除法 仿射变换图像平滑(噪点处理)高斯滤波均值滤波中值滤波多图像均值 边缘滤波索贝尔滤波凯尼滤波 图像锐化索贝尔锐化拉普拉斯锐化高通滤波锐化几种锐化方式对比 图像获取 用到的函数&…