WW-Mutex中两种算法

发布时间:2026/11/5 15:07:09

WW-Mutex中两种算法 1 Wait-DieIf the transaction holding the lock is younger, the locking transaction waits.如果持有锁的是新事务那么正在请求锁的事务就选择等待If the transaction holding the lock is older, the locking transaction backs off and dies.如果持有锁的是老事务那么正在请求锁的事务就放弃请求并终止场景: 事务A启动于10:00, 事务B启动于10:05, 事务C启动于10:10, 如果B持有锁A和C同时去获取锁,那么结果是怎样?B相对于A来说是新事务那么按规则(1), A应该等待B相对于C来说是老事务那么按规则(2), C应该放弃请求并终止linux kernelww_mutex_lock_interruptible- acquire the w/w mutex, interruptible, Lock the w/w mutex exclusively for this task.Deadlocks within a given w/w class of locks are detected and handled with thewait/die algorithm.If the lock isn’t immediately available this function will either sleep until it is (wait case).Or it selects the current context for backing off by returning -EDEADLK (die case).Trying to acquire the same lock with the same context twice is also detected and signalled by returning -EALREADY.Returns 0 if the mutex was successfully acquired.If a signal arrives while waiting for the lock then this function returns -EINTR.In the die case, the caller must release all currently held w/w mutexes for the given context and then wait for this contending lock to be available by callingww_mutex_lock_slow_interruptible.2 Wound waitIf the transaction holding the lock is younger, the locking transaction wounds the transaction holding the lock, requesting it to die.如果持有锁的是新事务(启动时间更晚的事务)那么请求锁的事务就伤害这个持锁的新事务要求它终止If the transaction holding the lock is older, it waits for the other transaction如果持有锁的是老事务(启动时间更早的事务)那么请求锁的事务就等待持有锁的老事务场景: 事务A启动于10:00, 事务B启动于10:05, 事务C启动于10:10, 如果B持有锁A和C同时去获取锁,那么结果是怎样?A先获C后获取锁的情况:B相对于A来说是新事务那么按规则(1), A应该伤害B并让B终止.此时A获得锁, 这时候如果C来获取锁那么C相对于A来说是新事务那么按规则(2), 应该等待.C先获A后获取锁的情况:B相对于C来说是老事务那么按规则(2), C应该等待; 这时候如果A来获取锁; B相对于A来说是新事务那么按规则(1), A应该伤害B并让B终止.此时A获得锁2.1 it waits for the other transaction, 其中it是指什么? other transaction又是指什么?(1) 语法层面“it” 的指代规则英文中“it” 指代前文出现过的主语而非宾语。前一句对应 Wound 场景If the transaction holding the lock is younger, the locking transaction wounds the transaction holding the lock.此处 “the locking transaction”请求锁的事务是主语后续动作 “wounds” 由它发出。后一句对应 Wait 场景If the transaction holding the lock is older, it waits for the other transaction.为了避免重复“it” 承接前一句的主语 “the locking transaction”请求锁的事务而非本句的主语 “the transaction holding the lock”持有锁的事务。(2)“other transaction” 指什么核心是 “other” 的语义 —— 指 “除了主语之外的另一个相关对象”本句的主语是 “it”即请求锁的事务句子围绕 “两个事务的锁竞争” 展开只有 “请求锁的事务” 和 “持有锁的事务” 两个主体“other transaction” 自然就是 “除了主语(持有锁的事务)之外的另一个事务”也就是 “持有锁的老事务”。
延伸阅读

更多相关文章

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 13:55:19

GD32E10x官方例程入门:从GPIO点灯到串口调试

简介:这份GD32E10x系列官方例程面向嵌入式硬件与单片机开发者,基于ARM Cortex-M3内核,汇集兆易创新GD32E10x的示例代码,适合工业控制、消费电子、通信设备等场景的学习、验证与二次开发。压缩包共935个文件,约11.16MB&…

2026/11/5 13:50:18

基于Django的运维平台实战:资产、发布、巡检、告警一体化

简介:这份资源是一套基于Django框架开发的运维平台源码,面向具备Python基础、希望了解Web运维系统实现思路的开发者与运维人员,可用于学习主机管理、服务监控、日志查看、任务调度、权限控制、资源统计、脚本执行与故障告警等常见运维模块的落…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑