当前位置: 首页 > news >正文

RTOS(8)信号量和互斥量

1.信号量

信号量分为二值信号量和计数信号量

与队列相比:他不能传输数据,但同时他不需要传输数据,占用的空间也更小,运行更快;

在源码里面,信号量的代码其实用到了队列的代码,是特殊的队列;

队列头的结构体中的队列长度被复用为计数值;

操作Take和Give的时候跟队列一样要关中断,然后处理计数值,唤醒等操作,再开中断;

2.互斥量

与二值信号量类似,是特殊的信号量,本身是想实现谁上锁,谁解锁这个问题;

二级制信号量初始值是0,创建后需要Give一次;互斥量初始值是1,创建后不需要Give一次。

在代码中,也是特殊的队列;

优先级反转:

解决方法:优先级继承

高优先级任务获取互斥量失败之后,将优先级继承给低优先级的任务;


任务中有当前优先级和原始优先级两个变量,便于解除继承;

递归上锁

解决方法:可以使用递归锁;递归锁实现了:谁上锁就由谁解锁。成对出现;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • “Apple Intelligence”的“系统提示词”被曝光了
  • 【环绕字符串中唯一的子字符串】python刷题记录
  • 数据结构(java实现)——优先级队列,堆
  • NSSCTF练习记录:[SWPUCTF 2021 新生赛]include
  • actual combat 45 分布式事务seata,若依cloud项目Test,xid为null
  • 编译和汇编的区别
  • C++ 异常处理:深入解析与实践应用
  • 第100+20步 ChatGPT学习:R实现Lasso回归
  • LabVIEW远程开发
  • 为什么要推荐R语言?欢迎订阅专栏《R 探索临床数据科学》
  • 240806-在Linux/RHEL开机中自动启动bash脚本
  • YARN 的介绍
  • Memcached的介绍与详解
  • 升级MacOS(Mojave)后使用git问题
  • 爬虫--模拟登录代理IP
  • 【React系列】如何构建React应用程序
  • CentOS7简单部署NFS
  • Cumulo 的 ClojureScript 模块已经成型
  • es6--symbol
  • Javascript弹出层-初探
  • ng6--错误信息小结(持续更新)
  • node 版本过低
  • Nodejs和JavaWeb协助开发
  • PHP 7 修改了什么呢 -- 2
  • Python 基础起步 (十) 什么叫函数?
  • redis学习笔记(三):列表、集合、有序集合
  • spring boot下thymeleaf全局静态变量配置
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 聊聊directory traversal attack
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #java学习笔记(面向对象)----(未完结)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (1)常见O(n^2)排序算法解析
  • (day 12)JavaScript学习笔记(数组3)
  • (MATLAB)第五章-矩阵运算
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (算法设计与分析)第一章算法概述-习题
  • (学习总结16)C++模版2
  • (一)Linux+Windows下安装ffmpeg
  • (一)基于IDEA的JAVA基础1
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET C# 使用 iText 生成PDF
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET成年了,然后呢?
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .Net中的集合
  • @javax.ws.rs Webservice注解
  • @RequestBody与@ModelAttribute
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [android] 练习PopupWindow实现对话框