首页 > 其他分享 >1820_ChibiOS中的同步消息

1820_ChibiOS中的同步消息

时间:2023-11-05 19:34:47浏览次数:32  
标签:同步 1820 server 传递 切入 线程 消息 ChibiOS


GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1820_ChibiOS中的同步消息_客户端

1. 看到这里提到的这个模型,我在想是不是我一直没有搞定的多核可以利用这个机制来解决。如果是多核,ChibiOS的这种机制是否依然奏效?这是一个后续需要去弄清楚的问题。

2. 之前看消息传递过程的说明的时候理解错了,我当时理解的是消息从即将切出去的线程传递出来,可以传递给即将切入进去的线程,但是这个切入进去的线程只是未来切入的一个概念。现在看来不是,而我自己的这个理解其实深思靠不住,如果按我理解的这样就没有所谓的切入概念了。

3. 消息的传递可以基于优先级也可以基于FIFO。

4. 大概看了一下,这个消息其实跟FreeRTOS中的队列消息类似。但是,ChibiOS的很多设计理念是围绕线程展开的,而FreeRTOS中可能是数据。因此,理解的角度上可能会有不同。

1820_ChibiOS中的同步消息_RTOS_02

1. 线程可以既是客户端也是服务器端,这让我想到了,其实这个机制可以做一个中转机制。

2. 消息的类型都是msg_t,可以发编码也可以发复杂的数据指针。

3. RT内核中定义的3个编码:MSG_OK、MSG_TIMEOUT、MSG_RESET。

1820_ChibiOS中的同步消息_RTOS_03

1. 这一页给出的例子可以看出来,消息的传递有时候不仅仅是为了功能服务的缺失而传递,有时候是为了连接不同的软件抽象层。

2. 可重入的库可以以线程代码的方式封装到线程,这样有几个有点:第一,多线程无序考虑互斥;第二,只需要给server线程分大的堆栈空间;第三,代码会议固定的优先级运行,也就是封装线程的优先级。

1820_ChibiOS中的同步消息_客户端_04

看了接口描述,本来自己假想了一下使用模型,没想到考虑错了。这里的server模板,主要分为4步:第一,server请求消息;第二,获取消息;第三,处理;第四,返回通知。

1820_ChibiOS中的同步消息_客户端_05

         客户端与server几乎是一样的模板,消息内容与处理方式略有不同。看到这里之后,我觉得有一点疑惑:这样的模板如何支持队列化处理?

1820_ChibiOS中的同步消息_优先级_06

1820_ChibiOS中的同步消息_客户端_07

         初始化部分的消息发送,纯粹是一个信息的传递。

         这就是ChibiOS中的消息,与FreeRTOS中的队列还是有一点差异的。

标签:同步,1820,server,传递,切入,线程,消息,ChibiOS
From: https://blog.51cto.com/greyzhang/8194792

相关文章

  • 1816_ChibiOS中的RT调度器
    GreyZhang/g_ChibiOS:IfoundanewRTOScalledChibiOSanditseemsinteresting!(github.com)1.ChibiOS的调度是一个严格根据优先级来的调度器。2.有一个与此功能相关的参数配置,用来设置时间片。如果这个数值设置为0,那么调度将会认为所有的线程优先级一样,线程之间的协同调......
  • java IO流:介绍下阻塞、非阻塞、同步、异步 I/O 的概念
    这里先介绍下阻塞、非阻塞、同步、异步I/O的概念。先来看看阻塞I/O,当用户程序执行read,线程会被阻塞,一直等到内核数据准备好,并把数据从内核缓冲区拷贝到应用程序的缓冲区中,当拷贝过程完成,read才会返回。注意,阻塞等待的是「内核数据准备好」和「数据从内核态拷贝到用户态」这两......
  • Tokio 在同步上下文中执行异步代码
    从spawn说起Tokio库中有两个同名的量,它们都叫spawn,但是却有着显著的区别:其中一个是tokio::runtime::Runtime结构体的方法(method),另一个是tokio::task模块的一个函数,同时也是你使用tokio::spawn时直接使用的那个.从这个特征来看,两者使用的方法是截然不同......
  • linux同步机制-completion
    一、completion1.1什么是completionlinux内核中,完成量completion是一种代码同步机制。如果有一个或多个线程必须等待某个内核活动操作达到某个点或某个特定状态,那么completion完成量可以提供一个无竞争的解决方案。1.2completion的使用1.2.1定义并初始化完成量//方式一......
  • 一镜到底 ElasticSearch 数据迁移同步技术
    ##简介[CloudCanal](https://www.clougence.com?kw=51cto_20231103)对于[Elasticsearch](https://www.elastic.co/)的支持经历了很多轮迭代,版本一路从6.x,7.x支持到8.x版本,也适配了其纷繁多样的API。因为Elasticsearch是一个相当流行的、实时的、并且具备一定不可替代能......
  • 一镜到底 ElasticSearch 数据迁移同步技术
    简介CloudCanal对于Elasticsearch的支持经历了很多轮迭代,版本一路从6.x,7.x支持到8.x版本,也适配了其纷繁多样的API。因为Elasticsearch是一个相当流行的、实时的、并且具备一定不可替代能力的搜索引擎,所以很有必要对比下市面上我们能够比较容易获得的、免费的数据迁移......
  • logstash同步mongodb到es
    环境:OS:Centos7说明:logstash本身不自带logstash-input-mongodb插件,需要自行安装。1.安装编译工具yuminstallgityuminstallgem 2.源码编译[root@localhost]#gitclonehttps://github.com/phutchins/logstash-input-mongodb.git[root@localhost]#cdlogstash-input......
  • 同步机与无功功率等基础
     发电机功率因数超前是指什么是吸收无功功率还是指发出容性无功功率?还是?https://zhidao.baidu.com/question/460958728.html发电机功率因数超前是指在电网吸收无功功率。当励磁电流较大时,电压较高,定子电流I滞后与端电压,输出滞后的无功功率,这时发电机运行在“过励”状态;逐步减......
  • 日志数据如何同步到MaxCompute
    https://developer.aliyun.com/article/727331摘要:日常工作中,企业需要将通过ECS、容器、移动端、开源软件、网站服务、JS等接入的实时日志数据进行应用开发。包括对日志实时查询与分析、采集与消费、数据清洗与流计算、数据仓库对接等场景。本次分享主要介绍日志数据如何同步到M......
  • anki 同步服务教程
    anki同步服务,支持安卓,ios,windows等设备,不确定是否支持Mac(没有设备)1、安卓使用教程:​​​​2、IOS使用教程:​​​3、Windows使用教程:​​​​以上使用的是AnkiDroid2.16.5版本,WindowsAnki2.1.66版本,第一次同步会稍微慢一点,请保持Anki软件常亮。软件下载:......