CHS_04.2.3.3+互斥锁

CHS_04.2.3.3+互斥锁

  • 进程互斥:锁

接下来 用于实现互斥的一种方法 你可以简单理解为 锁就是一个bool的变量

进程互斥:锁

在这里插入图片描述

只有true和false或者零和一两种状态分别表示当前已上锁或者没有上锁

有这样的两个函数可以操作锁acquire 这个函数就是上锁获得 锁

而release可以释放锁 那用锁实现互斥的主要缺点就是忙等

如果进不了临界区 就会不断的外物循环被卡在这忙等 这就会导致cpu资源的浪费 违反了让权等待的原则

由于忙等的过程中需要不断的循环检查 因此这类的锁通常把称为自旋锁

自己在原地旋转跳跃 闭着眼 像 我们之前学过tsl指令 swap指令以及单标志法

这些都属于自旋锁 那无论是哪种自旋锁 总之都是用于解决进程互斥的问题的

同时 锁有的这些自旋锁包括这介绍的互斥锁都有忙等的问题 都违反了让权等待的原则

那值得一提的是 如果一个进程在忙等暂时进不了临界区 那么他并不会一直占用处理机

如果这个进程它的时间片用完 那调度程序依然会让它下处理机 所以并不是忙等 就会一直占用处理机 它的时间片还是会用完的

那这种忙等的特性其实也有它的优点 因为在等待锁的期间不需要切换进程的上下文 切换进程的上下文其实

大家还是蛮大的 对吧 所以在多处理器的系统当中 如果对临界区上锁的时间很短

那么 这种自旋等待其实代价反而会很低 在多处理器的系统当中

如果某一个进程p一此时正在自旋等待 那么他只会吃掉这一个核的一个计算能力

那如果此时上锁的进程p二也在某一个核心里面运行 那p二是不是很有可能在接下快速的使用好临界区 然后快速的解锁

解锁了之后 这个p一在自旋等待的过程当中是不是突然就会发现哦 解锁了那他是不是就可以顺利的进入临界区

而这个自旋忙等的过程由于没有发生进程切换 因此忙等的代价反而是很低的

所以自旋锁的这种策略通常会用于多处理器的系统当中一个核 此时可能它的运算能力会被吃掉 在忙等

但其他核可以照常工作并且快速的释放 临界区正自旋锁就不太适用于单处理机系统

因为如果是单处理机系统的话 p一进程 此时他吃掉了唯一一个核 对吧 他在这个时间片的有可能等到被解锁吗 不可能

只有他这个时间片用完并且上锁的那个进程上处理机然后解锁之后

他才有可能获得这个锁 所以在单处理机系统当中 他不可能说这个自旋等着等着 哎 突然就获得锁了 不会发生这种情况
在这里插入图片描述

因此 这样自旋锁更适用于多处理机的系统好 这就是新考点锁用于实现进程互斥

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软硬兼施:亚信安慧AntDB创造更多可能性

亚信安慧AntDB是一种极具适配能力的数据库系统,它不仅在软件方面拥有出色的适应性,还能与国产硬件紧密配合,实现高效稳定的运行。无论是在上游还是下游领域,亚信安慧AntDB都展现出了卓越的适配程度。 在软件方面,亚信安…

防御保护常用知识

防火墙的主要职责在于:控制和防护 --- 安全策略 --- 防火墙可以根据安全策略来抓取流量之 后做出对应的动作 防火墙分类主要有四类: 防火墙吞吐量 --- 防火墙同一时间能处理的数据量多少 防火墙的发展主要经过以下阶段; 传统防火墙&#xf…

105.乐理基础-五线谱-谱号扩展

内容参考于:三分钟音乐社 上一个内容:104.乐理基础-五线谱-中音谱号、次中音谱号-CSDN博客 上一个内容里练习的答案: 首先高音谱号(G谱号)是从第二线开始画的,但是它只能从第二线开始画吗?并不…

nvm 工具使用介绍

目录 1.背景2.nvm介绍3.下载和安装4.配置环境变量5.配置淘宝镜像5.1 方式一:直接执行命令5.2 方式二:修改配置文件6.常用命令7.总结下载地址: https://github.com/coreybutler/nvm-windows/releases1.背景 在工作中,我们可能需要同时进行2个或者多个前端项目的开发,每个项…

软件行业门槛很低了吗

小编2003年开始搞了一家软件开发的小公司,那时候做点小的打卡考勤、消费、门禁一卡通软件都还能勉强生存。最红火的时候也有十多个员工。后来业务拓展越来越来了,公司慢慢也就没办法运转下去了。 后来只有转到一家建筑施工企业管弱电智能化版块&#xf…

行测-数量关系:4. 排列组合与概率问题、容斥原理问题

1、排列组合与概率问题 1.1 排列组合 1.1.1 基础概念 C 问法辨析 这些实际上是一种问题的不同问法。 例题 C C D A C,注意不能构成三角形的边长要去除。 1.1.2 经典题型 1.1.2.1 枚举法 2,从大到小,不重不漏 C B 1.1.2.2 捆绑法 48&#…

136832-63-8,活细胞示踪剂CMFDA(绿色),5-氯甲基荧光素二醋酸酯,广泛应用于细胞追踪和标记实验中

136832-63-8,活细胞示踪剂CMFDA(绿色),5-氯甲基荧光素二醋酸酯,CellTracker Green CMFDA,可以用于基因表达分析等实验中,广泛应用于细胞追踪和标记实验中 您好,欢迎来到新研之家 文章关键词:1…

Spring AOP实现

Spring AOP实现 AOP概述什么是AOP什么是Spring AOP Spring AOP快速入门引入依赖实现计时器 Spring AOP详解Spring AOP核心概念切点(Pointcut)连接点(Join Point)通知(Advice)切面(Aspect) 通知类型注意事项 PointCut多个切面切面优先级 Order切点表达式execution表达式annotati…

018 用户交互Scanner

什么是Scanner对象 next()方法 // 声明输入对象 Scanner scanner new Scanner(System.in);System.out.println("next()方法接收:"); if (scanner.hasNext()) {// 输入 Hello worldString str1 scanner.next();// 输出 HelloSystem.out.println(str1); }…

idea用version标签配置版本号报错版本号missing

问题描述&#xff1a; 用<mybatis-plus.version>3.3.2</mybatis-plus.version>配置pom的版本号&#xff0c;报错 dependencies.dependency.version for com.baomidou:mybatis-plus-boot-starter:jar is missing. line 33, column 21详细报错如下&#xff1a; 详…

【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的保障容量的三大关键方案实现

盘点本年度我们探索服务的保障容量的“三大法宝”方案实现 文章导航背景介绍三大法宝服务“吃不下了”限流&#xff08;排队理论&#xff09;漏桶和令牌桶漏桶算法算法原理算法漏洞 令牌桶算法&#xff08;生产者和消费组模式&#xff09;并发控制限流成功案例 熔断和降级降级的…

计算机设计大赛 推荐系统设计与实现 协同过滤推荐算法

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 推荐系统设计与实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1…

IDEA jdk版本切换问题

打开 IntelliJ IDEA 的 Project Structure&#xff08;快捷键通常是 Ctrl Alt Shift S&#xff09;。 转到 Project Settings > Modules。 选择相应的模块&#xff0c;然后在 Sources 标签页下&#xff0c;查看 Language level 是否设置为 自己需要的jdk版本语言。 接…

Java开发分析中文 ---- JProfiler 13

JProfiler 13是一款专业的Java应用程序性能分析工具&#xff0c;可以快速诊断和优化Java应用程序的性能问题。它支持多种操作系统和应用服务器&#xff0c;提供实时性能监控、CPU分析、内存分析、线程分析和数据库访问分析等功能。使用JProfiler 13可以深入了解应用程序的性能和…

PyQT5环境搭建与入门操作(超详细图解安装)

PyQt5软件简介 PyQt5官方版是一款专业优秀的编程工具。PyQt5最新版需要配合Python使用&#xff0c;是Qt C跨平台应用程序框架和跨平台解释语言Python的结合&#xff0c;支持Windows、OS X、Linux、iOS和Android平台运行。PyQt5软件可以帮助用户从Qt Designer生成Python代码&am…

C语言“%”运算符是否可以对小数进行运算?

一、问题 “&#xff05;”运算符是否可以对⼩数进⾏运算&#xff1f; 二、解答 “&#xff05;”运算符&#xff0c;称为求余运算符或者模运算符&#xff0c;要求“&#xff05;”两侧都为整型数据&#xff0c;否则将会产⽣错误 #include <stdio.h> int main() {floa…

【性能问题】postman接口测试偶现高延时排查

一、背景 负责的项目&#xff0c;在test环境&#xff0c;postman连续发送两次接口请求&#xff0c;第二次响应时间高达34s&#xff0c;该现象经常出现&#xff0c;影响QA测试执行效率。这种想象持续一段时间了&#xff0c;今天终于忍无可忍&#xff0c;向Dev和SRE发出求助信息…

AI特训一:为什么要学习AI

我们先了解什么是AI AI&#xff08;人工智能&#xff09;是指计算机系统经过学习和推理能够模拟人类智能行为的一种技术。AI利用机器学习、深度学习、自然语言处理等技术&#xff0c;能够分析大量的数据、识别模式、做出决策和预测 AI有哪些强大之处 处理大量数据&#xff1a…

关于 PostgreSQL,你了解多少

背景 最近因工作原因&#xff0c;了解到了阿里的 hologre&#xff0c;它只支持 psql 协议&#xff0c;用起来跟 mysql 会差很多&#xff0c;也很不习惯。所以就好奇&#xff0c;为啥放着mysql不用&#xff0c;却用 psql 什么是 psql psql 是 开源的关系型数据库管理系统 Pos…

关于msvcp140_1.dll丢失的解决方法分析,一键修复msvcp140_1.dll

随着技术的迭代更新&#xff0c;我们对操作系统变得越发依赖。不过&#xff0c;在使用中有时也会遇到技术障碍&#xff0c;诸如遇到 MSVCP140_1.dll 文件不见的情况。本文着重讨论此问题&#xff0c;并展示了若干解决办法&#xff0c;以便教导用户应对及修补MSVCP140_1.dll文件…