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

1826_ChibiOS的OSLIB中的二值信号量

         全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1. 二值信号其实是信号量的一种特殊应用,为了保证高效,实现上都是采用计数信号量的内联设计实现的。

2. 与常规的二值信号相比,ChibiOS实现的二值信号进行了一些扩展功能。主要是复位、超时以及发消息。这些扩展的功能其实也是继承自计数信号。

         从接口的处理功能来看,可用的场景还是很多的。

         这个是代码使用的一个例子,比如说在中断中收到信号之后通过二值信号通知线程来处理。而这里的这部分实现,是完成了这个信号的通知部分。

1. 在对应的线程之中,首先做的是一个等待信号的操作。

2. 如果等待出现了超时,可以进行超时的处理。

1. 如果等待没有超时的时候等来了信号消息,那么获取中断的处理数据在这个线程之中处理。

2. main函数中给出来了二值信号的初始化。

1. 初始化之后进行了任务的创建。

2. 从提示信息看,这种场景之下使用计数信号量是不合适的。主要的问题点是计数信号量会一直增加,如果是线程处理的速度慢,很可能会出现计数信号超出最大限值溢出的情况。从这个描述看,其实设计良好的系统其实使用计数信号问题也不大。而从另一个溢出保护的角度来看,很可能二值信号在实现的时候可能加了OS中的wait操作。

以上的这些内容就是ChibiOS中的二值信号的一个简单的介绍,从这里其实能够看出来一个比较有意思的点:二值信号的值其实不仅是2个,只是最大数值限制在了1,而0和1正好是获取到以及没有获取到两个特殊的状态。而在这几个数值之外,其实还有一系列的复数用来代表排队的请求。这样,也就出现了二值信号的数值其实还有一个扩充的负数范围的情况。

相关文章:

  • 数据分析基础之《matplotlib(4)—柱状图》
  • 【HTML语法】
  • 深度学习——第3章 Python程序设计语言(3.5 Python类和对象)
  • RabbitMQ创建新用户,并给用户添加角色和授权
  • 报错:merge sql error, dbType mysql, sql : select...
  • 点击el-tree小三角后去除点击后的高亮背景样式,el-tree样式修改
  • block-recurrent-transformer-pytorch 学习笔记
  • Mybatis之动态SQL
  • 基于SSM的医院交互系统的设计与实现
  • Oracle官网 账号及密码 -- 笔记
  • 测试新手百科:Postman简介、安装、入门使用方法详细攻略!
  • Hadoop3.x完全分布式环境搭建Zookeeper和Hbase
  • 工作中常用的RabbitMQ实践
  • GPT-4 变懒了?官方回复
  • Linux 网络协议
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 0x05 Python数据分析,Anaconda八斩刀
  • CAP 一致性协议及应用解析
  • golang 发送GET和POST示例
  • JavaScript学习总结——原型
  • mysql中InnoDB引擎中页的概念
  • python学习笔记-类对象的信息
  • Spark学习笔记之相关记录
  • SwizzleMethod 黑魔法
  • windows下mongoDB的环境配置
  • zookeeper系列(七)实战分布式命名服务
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从零开始学习部署
  • 多线程 start 和 run 方法到底有什么区别?
  • 分布式任务队列Celery
  • 智能合约开发环境搭建及Hello World合约
  • - 转 Ext2.0 form使用实例
  • NLPIR智能语义技术让大数据挖掘更简单
  • 阿里云重庆大学大数据训练营落地分享
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 第二十章:异步和文件I/O.(二十三)
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #Lua:Lua调用C++生成的DLL库
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $forceUpdate()函数
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C++哈希表01)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (rabbitmq的高级特性)消息可靠性
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (汇总)os模块以及shutil模块对文件的操作
  • (十五)使用Nexus创建Maven私服
  • (转)C#调用WebService 基础