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

1819_ChibiOS的互斥信号与条件变量

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

1. 关于会吃信号与条件变量的全局配置提供了4个配置信息,分别是互斥信号的使能、互斥信号的递归支持、条件变量的使能、条件变量的超时使能。

2. 不同于一般的信号量,互斥信号是全都绑定线程的。

3. 针对互斥信号的递归操作是指,同一线程可以多次锁定信号,但是也要解锁对应的次数才能够允许其他的线程获取。

1. 互斥信号绑定了两个信息,其中一个是拥有互斥信号的线程引用,另一个是等待线程的引用队列。

2. 在API提供方面,提供了try功能的安全设计接口,这样可以兼容信号已经被其他线程取走时候的便捷设计处理。

3. 从是否带有try的两个lock的对比可以看得出来,没有try的API,在信号已经被其他线程占用了的情况下会导致等待。而try接口则会跳过去。

4. 全部解锁的功能,在一个线程只拥有一个互斥信号的情况下执行效率更高,采用这种方式可以加速执行效率。

1. 条件变量本质上是一个线程队列,wait操作会释放上一次获取到的互斥信号,然后把当前的任务加入到条件变量队列中。

2. 条件变量信号发送或者广播执行的时候,会重新获取之前释放的互斥信号,之后从wait返回。

3. 1和2的动作其实是上面图中的2个可以来回跳转的状态。

1. 条件变量不能够单独使用,需要结合互斥信号。他的理解可以参考这个三间房的模型来理解。互斥信号的锁定可以作为一个触发信号来触发进入状态机的条件,进入所谓的“中庭”状态,这个状态其实是一个排队过程。形象一点理解,也就是说这个lock的动作,触发了一个中庭排队的动作。当请求互斥信号的时候,从中庭的排队成员中取出一个,进入到主房间。而这个主房间不是队列,是一个单个元素。此时,如果解锁互斥信号,那么整个状态就会结束。这也跟前面所说的,条件变量不能单独使用必须与互斥信号结合使用对的起来。到此为止,其实还没有涉及到条件变量,只是涉及到了互斥信号。如何涉及到条件变量呢?当互斥信号获取到之后,通过条件变量wait API来触发就可以来到这个条件变量队列中进行等待。这个条件变量的等待队列,是模型中的等待房间排队。等不及的时候,可以同等待房间退出。而chCondSignal API则会让“中庭”多一个等待人员。

2. 监控器的代码模板流程:先lock一个互斥信号,之后等待条件满足,最后释放互斥信号。

         针对上面的模型处理的内容,感觉上还是一个提供以及消耗的过程。提供方检查队列,如果队列不满就写,满了就等。而对于消耗方来说,如果队列不空就读,空了就等。在这里,互斥量可以保证信息的一致性。

         如果是涉及到中断,中断一般是作为一个提供方。不同线程可以等待阻塞,中断一般会直接跳过。不过,可能会有信息或者数据因此丢失。

         这就是互斥信号与条件变量的一个简单小结,其中互斥信号其实是容易理解的,这个条件变量理解的有一点费劲。或许,得看到一个实际的使用场景例程才能够更准确理解这个设计的意图。

相关文章:

  • Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
  • 数据结构|基础知识定义
  • Linux系统下配置王爽汇编语言环境
  • 使用了百度OCR,记录一下
  • node.js - 上传文件至阿里云oss
  • Postman如何做接口自动化测试?
  • java.sql.SQLException: ORA-28000: the account is locked
  • C#8.0本质论第十章--合式类型
  • 【MySQL索引与优化篇】InnoDB数据存储结构
  • 【JavaScript】快速学习JS
  • 聊聊“JVM 调优JVM 性能优化”是怎么个事?
  • Transit path
  • javaswing/gui+mysql的学生信息管理系统
  • 代码随想录 | Day61 and 62
  • 77 全排列
  • 考虑温度影响的vumat子程序在木材受火后强度分析中的应用
  • RK3568-clock
  • 使用 @antfu/eslint-config 配置 eslint (包含兼容uniapp方法)
  • 【JAVA学习笔记】46 - (43)第十一章作业
  • PHP 同城服务共享茶室小程序系统是如何实现的?
  • wordpress配置文件修改/厦门seo招聘
  • 自己做电台直播的网站/百度浏览器入口
  • 画出网站和目录结构图/如何自己制作一个网站
  • 上海装修设计公司排名/网页关键词优化软件
  • 网站左下角留言板html/站长之家网站介绍
  • 什么网站做啤酒/微信营销方式