互斥锁原理

简介: 互斥锁原理

如果有交互的公共数据区域,我们需要让一个进程先执行,一个进程后执行,互斥锁就是用锁的方式让他们的竞争关系变得有序。

临界区问题

临界区是在程序之间有公共数据交互时产生的区域,没有两个进程可以在它们各自的临界区同时执行

临界区的i协议

临界区管理准则

临界区必须有一个进程,因为如果临界区为空且满足互斥性那么其他进程都无法在临界区运行,临界区运行的程序也不能一直占用临界区,必须要让其他进程等待时间为有限的。

喂养金鱼问题

上面代码还是会有问题

那么这段代码的临界区在哪里

这楼里fish和feed变量都是公共的,所以这块区域就是临界区

我们修改这段伪代码,将异步尝试转为同步

这里这个note代表一个记号,表示正在判断是否喂鱼,remove note走时候撕掉记号。

但上个代码还是有问题

我们再次修改伪代码

但这里金鱼就不是撑死了,是饿死了

违反了有空让进原则

那么对于计算机系统来说,饿死好,还是撑死好呢?

对于计算机数据来说,我认为是饿死更好,因为撑死就等于数据被修改为错误了,而饿死代表计算机的数据并没有被修改。

我们再次修改伪代码

空循环,让alice等待tom移除note

我们再次分析

这里我自己对这个代码分析了一下:tom要执行需要满足alice没留下note,一但留下note,tom就无法喂食,而alice是一定会喂食的,所以这里需要alice这个设备性能比tom好

这两个算法和上面的算法思想是差不多的

互斥锁

一个进程拿到锁,其他进程如果与这个进程互斥,那么再要取得锁的使用权,就会进入loop状态,进程使用完需要释放锁

上锁和测试是不能被打断的

既然我们知道了上锁和测试是不可以被打断的,我们引用一个原子操作的概念

解决浪费cpu周期的缺点,我们可以将这个等待进程进入等待队列里,但是我们要注意,万一自旋的时间比切换队列消耗的时间更久,那么这个操作反而浪费了资源。

相关文章
|
关系型数据库 MySQL Java
Sharding-Proxy的基本功能使用
Sharding-Proxy是一个分布式数据库中间件,定位为透明化的数据库代理端。作为开发人员可以完全把它当成数据库,而它具体的分片规则在Sharding-Proxy中配置。
3167 0
Sharding-Proxy的基本功能使用
|
Linux C语言 C++
CentOS 7.6 编译安装最新版本GCC 9.2.0 实录
CentOS 7.6 编译安装最新版本GCC 9.2.0 实录,GCC是Linux的核心模块,升级可能会导致一些问题,请谨慎升级,升级之前做好备份工作。
|
数据采集 Web App开发 iOS开发
爬取B站评论:Python技术实现详解
爬取B站评论:Python技术实现详解
|
Java Maven
IDEA Maven 源修改为国内阿里云镜像的正确方式, 2023 年更新,亲测可用
IDEA Maven 源修改为国内阿里云镜像的正确方式, 2023 年更新,亲测可用
41913 1
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
1060 0
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
|
SQL 存储 NoSQL
NoSQL数据库的四大分类及分析
NoSQL数据库的四大分类及分析 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
2810 0
|
3天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
9天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾