5-1RT-Thread互斥量

5-1RT-Thread互斥量

  • 互斥量
  • 斥量的管理方式

在这里插入图片描述

互斥量

在这里插入图片描述

互斥量又称为互斥型信号量,是一种特殊的二值信号量。以超市的储物柜为例,当用户A存入物品并关闭柜门,则用户A就获得了此格柜子的使用权。此时其他用户无法使用此个柜子,只有当用户A开锁取出物品后,其他用户才能使用此格柜子。

在这里插入图片描述

互质量的状态只有两种,开锁或闭锁。当有线程持有它时,互斥量处于闭锁状态,由这个线程获得他的所有权。相反,当这个线程释放它时,将对互斥量进行开锁,失去它的所有权。当一个线程持有互斥量时,其他线程将不能够对它进行开锁或持有它,持有互斥量的线程持也能够再次获得这个锁不被挂起。这个特性与一般的二值信号量有很大的不同。在信号量中,因为已经不存在实力,现成递归持有会发生主动挂起,最终形成死锁。

使用信号量会导致的另一个潜在问题是线程优先级反转问题。所谓优先级反转,即当一个高优先级线程试图通过信号量机制访问共享资源时,如果该信号量已被一个低优先级线程持有,而这个低优先级线程在运行过程中可能又被其他一些中等优先级的线程抢占,因此造成高优先级线程被许多具有较低优先级的线程阻塞,实时性难以得到保证。

在这里插入图片描述
在此过程中优先级发生了反转,线程B先与线程A运行,这样将无法保证高优先级线程的响应时间。使用互斥量可以解决优先级反转的问题。

在这里插入图片描述
如图所示,这样继承优先级的线程,避免了系统资源被任何中间优先级的线程抢占,解决了优先级反转引起的问题。
在这里插入图片描述

斥量的管理方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

vue3中用setup写的数据,不能动态渲染(非响应式)解决办法

相比于2.0&#xff0c;vue3.0在新增了一个setup函数&#xff0c;我们在setup中可以写数据也可以写方法&#xff0c;就像我们以前最开始学习js一样&#xff0c;在js文件中写代码。 For instance <template><div class"person"><h2>姓名&#xff1…

Elasticsearch-通过分析器进行分词

在Elasticsearch中&#xff0c;分析器&#xff08;Analyzer&#xff09;是用于将文本转换为可搜索的术语&#xff08;tokens&#xff09;的组件。这个过程通常被称为分词&#xff08;Tokenization&#xff09;。Elasticsearch使用分析器来处理文本字段&#xff0c;以便进行索引…

C语言题目:排序问题2

题目描述 将十个数进行从大到小的顺序进行排列 输入格式 十个整数 输出格式 以从大到小的顺序输出这个十个数 样例输入 1 2 3 4 5 6 7 8 9 10样例输出 10 9 8 7 6 5 4 3 2 1 代码解析 1. 引入头文件 代码首先引入了stdio.h头文件&#xff0c;这是C语言标准输入输出库…

Python对象序列化库之dill使用详解

概要 在 Python 编程中,序列化(Serialization)和反序列化(Deserialization)是处理对象持久化和数据传输的常见任务。Python 提供了内置的 pickle 模块用于对象序列化,但它在处理复杂对象(如带有 lambda 函数、生成器和闭包的对象)时存在一定局限性。dill 库是 pickle …

处理docker的镜像下载问题

文章目录 概要问题背景操作步骤小结 概要 命令解析 启动 systemctl start docker重启守护进程 sudo systemctl daemon-reload重启docker服务 sudo systemctl restart docker重启docker服务 sudo service docker restart关闭docker service docker stop关闭do…

Go微服务: 分布式之发送带有事务消息的示例

分布式之发送带有事务消息 现在做一个RocketMQ的事务消息的 demo 1 &#xff09;生产者 package mainimport ("context""fmt""time""github.com/apache/rocketmq-client-go/v2""github.com/apache/rocketmq-client-go/v2/prim…

Oracle 19C 数据库表被误删除的模拟恢复

Oracle 19C 数据库表被误删除的模拟恢复操作 1、模拟创建表用于恢复测试 sqlplus zzh/zzh SQL> create table obj_tb tablespace users as select * from dba_objects; Table created. SQL> select count(*) from obj_tb; COUNT(*) ---------- 72373 2、记录当前…

博客摘录「 AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)」2024年6月10日

关键要点&#xff1a; 1.AXI Stream经过协议转换可使用AXI_FULL&#xff08;PS与PL间的接口&#xff0c;如GP、HP和ACP&#xff09;。 2.传输数据类里就涉及一个握手协议&#xff0c;即在主从双方数据通信前&#xff0c;有一个握手的过程。基本内容&#xff1a;数据的传输源会…

浅谈配置元件之HTTP请求默认值

浅谈配置元件之HTTP请求默认值 在进行HTTP请求的测试计划设计时&#xff0c;"HTTP请求默认值"配置元件扮演着极其重要的角色&#xff0c;它能够简化测试计划的设置&#xff0c;提高测试效率。本问将详细介绍如何使用JMeter中的“HTTP请求默认值”配置元件。 HTTP请求…

rocketmq-5.1.2的dleger高可用集群部署

1、背景 原先为5.0.0版本&#xff0c;因检查出有漏洞&#xff0c;升级到5.1.2版本。 【Rocketmq是阿里巴巴在2012年开发的分布式消息中间件&#xff0c;专为万亿级超大规模的消息处理而设计&#xff0c;具有高吞吐量、低延迟、海量堆积、顺序收发等特点。在一定条件下&#xf…

天锐绿盾 | 无感知加密软件、透明加密系统、数据防泄漏软件

摘要&#xff1a;文件加密软件,包含禁止非授权的文件泄密和抄袭复制解决方案即使被复制泄密都是自动加密无法阅读,透明加密,反复制软件,内网监控,文件加密,网络安全方案,透明文件加密,加密文件,图纸加密,知识产权保护,加密数据; 通过绿盾信息安全管理软件&#xff0c;系统在不改…

3D线扫相机中的深度数据与激光反射强度数据获取及其应用

1. 引言 3D线扫相机&#xff08;3D line scan camera&#xff09;是一种高精度的三维测量设备&#xff0c;广泛应用于工业自动化、质量控制和精密测量等领域。与传统二维成像相机不同&#xff0c;3D线扫相机能够同时获取物体的深度信息和反射强度信息&#xff0c;从而为高精度…

传统工厂该如何做数字化转型?

传统工厂实现数字化转型需多方面着手&#xff0c;包括树立战略意识、明确目标规划&#xff0c;加强信息化建设、提升数据能力&#xff0c;培养引进人才、推动技术创新&#xff0c;优化业务流程、提高生产效率与质量管控&#xff0c;加强协同合作、实现产业链整合&#xff0c;建…

力扣爆刷第150天之TOP100五连刷(几数之和、堆排、合并链表)

力扣爆刷第150天之TOP100五连刷&#xff08;几数之和、堆排、合并链表&#xff09; 文章目录 力扣爆刷第150天之TOP100五连刷&#xff08;几数之和、堆排、合并链表&#xff09;一、15. 三数之和二、53. 最大子数组和三、912. 排序数组四、21. 合并两个有序链表五、1. 两数之和…

【CH32V305FBP6】USBD HS 中断分析

文章目录 前言中断分析 USBHS_IRQHandler传输完成&#xff1a;USBHS_UIF_TRANSFERTOKEN_IN&#xff1a;发送完成TOKEN_OUT&#xff1a;接收完成 描述符&#xff1a;USBHS_UIF_SETUP_ACT总线复位&#xff1a;USBHS_UIF_BUS_RST总线挂起&#xff1a;USBHS_UIF_SUSPEND 前言 所有…

JavaScript创建函数和对象的常用方法

简介 随着版本的更新&#xff0c;JavaScript中存在大量的创建函数和对象的方法&#xff0c;下面是一些常见的方式以及对应的优缺点&#xff0c;内容参考&#xff1a;ES6 入门教程 创建函数 1. 函数声明&#xff08;Function Declaration&#xff09; function myFunction(a…

np.arctan2和np.arctan

np.arctan2 和 np.arctan 都是用于计算反正切函数的 NumPy 函数&#xff0c;但它们的使用和功能有所不同。 np.arctan2 np.arctan2(y, x) 计算 atan2(y,x)&#xff0c;即从坐标 (x,y)到原点的角度&#xff08;弧度&#xff09;。它考虑了两个参数的符号来确定正确的象限&…

神经网络 torch.nn---nn.RNN()

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) RNN — PyTorch 2.3 documentation torch.nn---nn.RNN() nn.RNN(input_sizeinput_x,hidden_sizehidden_num,num_layers1,nonlinearitytanh, #默认tanhbiasTrue, #默认是Truebatch_firstFalse,dropout0,bidirection…

Android开发之音乐播放器添加排行需求

Music统计功能需求 1.记录歌曲名称与次数(歌曲播放结束算一次)&#xff0c;根据播放次数制作一个排行列表;&#xff08;开始说要记录歌手&#xff0c;后面debug发现这个字段没有&#xff0c;暂时不记录&#xff09; 2.记录播放歌曲的时长&#xff0c;时间累加&#xff1b;&…

sourcemap

sourcemap介绍 什么是sourceMap sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术webpack通过配置可以自动给我们source maps文件&#xff0c;map文件是一种对应编译文件和源文件的方法 类型含义source-map原始代码 最好的sourcemap质量…