8-事件组或标志

news2024/11/14 12:32:16

1-事件位(标志)

事件位用于指示事件是否发生。事件位通常称为事件标志。例如,一个应用程序可以:

  • 定义一个标志,当为1时,表示消息已经接收并进行处理,当为0时,表示没有消息要处理。
  • 定义一个比特位(或标志),当它设置为1时,表示“已经把应用程序准备的消息队列发送到网络,而当它设置为0时,表示“没有应用程序准备的消息队列发送到网络”。
  • 定义一个比特位(或标志),当它设置为1时,表示“可以向网络上发送检测到的消息信号,而当它设置为0时,表示“没有”。

2- 事件组

事件组是一组事件位。事件组是由单个事件位组成的。例如:

  • 表示“消息已接收并准备处理”的事件位可能是事件组中的位0。
  • 在同一个事件组中,表示“已经把应用程序准备的消息队列发送到网络”的事件位可能是位1。
  • 表示“可以向网络上发送检测到的消息信号”的事件位可能是同一个事件组中的第2位。

3- 事件组和事件位数据类型

事件组由EventGroupHandle_t类型的变量定义。
如果configUSE_16_BIT_TICKS设置为1,则事件组中存储的位(或标志)为8,如果configUSE_16_BIT_TICKS设置为0,则存储的比特位(或标志)数目为24。对configUSE_16_BIT_TICKS的依赖源于进程内部实现中用于线程本地存储的数据类型。
事件组中的所有事件位都存储在一个无符号变量中,类型为EventBits_t。事件位0存储在位0中,事件比1存储在位1中,以此类推。
下图描述了一个24位的事件组,用三个位描述上面说到的3个事件,在下图中,只有位2被设置。

4- 事件组API函数

在事件组API函数中,允许在事件组中设置一个或多个事件位,清除事件组中的一个或多个事件位,以及等待时间组中设置一个或者多个事件位(进入阻塞状态,以便任务不消耗任何处理时间) 。
事件组也可以用来同步任务,创建通常被称为任务“会合”的内容。任务同步点是应用程序代码中的一个位置,在这个位置上,一个任务将以阻塞状态等待(不消耗任何CPU时间),直到所有参与同步的其他任务也到达它们的同步点。

5- 事件组可能遇到的问题

5.1 避免在用户应用程序中创建争用条件:

事件组实现将在 在以下情况下申请:

  • 目前尚不清楚谁负责清除单个位 (或标志)。
  • 目前尚不清楚何时清除位。
  • 不清楚在进程退出测试该位值的API函数时,该位是否被设置或清除(可能是另一个进程或中断已经改变了该位的状态)。

5.2 避免不确定性

事件组概念意味着非确定性行为,因为 不知道一个事件组上有多少任务被阻止,因此 不知道需要测试多少条件或任务 设置事件位时取消阻止。

FreeRTOS 质量标准不允许非确定性 禁用中断时或从内部执行的操作 中断服务例程。为了确保这些严格的质量标准是 设置事件位时不违反:

RTOS 调度程序的锁定机制用于确保 从 RTOS 设置事件位时,中断保持启用状态 任务。
集中式延迟中断机制用于延迟 在尝试将位设置为任务的操作 从中断服务例程中设置事件位。

注:有关的演示例程请参考:FreeRTOS/Demo/Common/Minimal目录中的文件。

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

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

相关文章

【王道计算机网络笔记】数据链路层-数据链路层的功能

文章目录数据链路层的研究思想数据链路层基本概念数据链路层功能概述为网络层提供服务链路管理帧定界、帧同步与透明传输(组帧)封装成帧透明传输组帧方法字符计数法字符填充法零比特填充法违规编码法流量控制停止-等待协议停等协议-无差错情况停等协议-有…

es搜索功能——DSL查询文档——DSL基本语法

1、查询的基本语法 # GET请求方式(固定写法) # indexName 要查询的索引库 # _search 查询语句的固定格式 GET /indexName/_search {"query": {"查询类型": {"查询条件": "条件值"}} } 2、无条件查询&#xff…

基础入门 - Spring Boot HelloWorld 第一节

需求&#xff1a;浏览器发送 /hello 请求&#xff0c;响应 Hello&#xff0c;Spring Boot 2 创建 maven 项目 boot-01-helloworld 如果想用Spring Boot来进行开发 需要在pom中创建父工程 <!-- Spring Boot 父工程 --> <parent> <groupId>org.springframew…

医疗健康产品展

​ 国内医疗健康行业的独角兽公司&#xff08;估值超10亿&#xff09; 下面&#xff0c;我们先看名列第二的企业&#xff1a; 微医&#xff08;平安医疗健康管理股份有限公司&#xff09; 基本信息 微医是国际领先的医疗健康科技平台&#xff0c;由廖杰远及其团队于2010年创建…

【GD32F427开发板试用】FreeRTOS移植工程

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;kings669669 前言 为了方便需要FreeRTOS&#xff0c;附上移植完毕的工程&#xff0c;方便大家后续的开发。 GitHub&#xff1a;https://githu…

【flutter电子木鱼】flutter 打包 android apk,记录配置签名的过程/调试的过程及flutter build apk放到手机上用。

目标&#xff1a; 目标通过这篇blog记录一下flutter打包android apk的过程&#xff0c;项目是参考以下链接的git仓库&#xff0c;然后自己重新创建了一个project。安卓应用市场的木鱼充斥着广告和付费体验极差&#xff0c;自己做一个还可以根据喜好做适应性调整&#xff0c;不…

图文版实现无头非循环单链表的增加和删除操作

hi&#xff0c;上一期已经给大家分享过代码版的链表的增删查改了&#xff0c;现在要对部分方法进行详细的介绍了 首先来说一说在任意位置的增加一个结点 废话不多说&#xff0c;开整 先来一幅图 加入已经有这样的链表了&#xff0c;现在要在 任意一个位置插入元素 我们先考…

zookeeper的安装与配置

1. 在root账户下创建zookeeper安装目录&#xff1a;mkdir /home/zookeeper 2. 进入zookeeper目录&#xff1a;cd /home/zookeeper 3. 通过wget命令下载zookeeper安装包&#xff1a;wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0…

以太网 VLAN(简介、MAC地址表与VLAN)

2.8.1 以太网 VLAN&#xff08;简介、MAC地址表与VLAN&#xff09; VLAN 虚拟局域网&#xff08;Virtual Local Area Network&#xff09;&#xff0c;通过VLAN划分不同的网络&#xff0c;能够有效提升网络的稳定性、缓解广播风暴带来的影响。 不同VLAN表示不同的虚拟局域网&am…

Unity与IOS⭐Unity接入IOS SDK的流程图

文章目录 🟥 整体思路🟧 如何复用SDK🟥 整体思路 1、先看一遍sdk的调用方法,将需要在unity中调用的方法记住给第二步使用。 2、新建一个Unity项目,写好去使用IOS SDK的方法。 3、导出Xcode工程,在Xcode中接入SDK。并根据SDK的文档,写好暴露给Unity的.h和.m文件。 …

[附源码]Python计算机毕业设计SSM焦作旅游网站(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计市场摊位管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

振弦采集模块的信号检测与分析计算

VM系列振弦采集模块的信号检测与分析计算 1、延时采样 如下图示&#xff0c; 振弦传感器钢弦起振后&#xff0c;信号强度在短时间内迅速达到最大&#xff0c;然后在钢弦张力及空气阻力作用下逐渐恢复静止。我们可将整个振动过程分为起振、调整、稳定、消失几个阶段&#xff0c…

第5章 R语言基础学习——金融资产收益率计算

5.1 收益率定义 5.1.1 常用收益率 5.1.2 红利收益率 数据中Adjusted一般就调整好了红利的收益率 5.1.3 超额收益率 与市场基准比较 5.2 股票类资产收益率计算 5.2.1 单个股票收益率计算 1. 从txt读取数据 2. 三种方法、计算股票百分比日收益率 3. 算术平均收益 4. 几何平…

电源常用LDO线性稳压IC大全!

LDO线性稳压IC FS7203 高输入电压&#xff1a;高达30V 输超低静态电流&#xff1a;0.8uA&#xff08;Typ&#xff09; 输出电压范围&#xff1a;1.5-12V 输出电压精度&#xff1a;2% 输出电流&#xff1a;IOUT150mA &#xff08; VIN4.8V&VOUT3.3V&#xff09; 短路电流&am…

桥接模式Bridge

1.意图&#xff1a;将抽象部分与其实现部分分离&#xff0c;使它们都可以独立地变化。 2.结构 Abstraction定义抽象类的接口&#xff0c;维护一个指向Implementor类型对象的指针&#xff1b; RefinedAbstraction扩充由Abstraction定义的接口&#xff1b; Implementor定义实现类…

ruoyi系统启动

系统概要 系统分为2部分前端vue —— vscode&#xff0c;后端spring-boot —— eclipse 系统依赖服务&#xff1a; 数据库——mysql 缓存——redis 启动顺序 mysql ——> redis ——> eclipse ——> vscode mysql 启动 windowQ 输入 service 打开服务管理 找到…

[附源码]Python计算机毕业设计Django实验室管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Windows下免杀思路总结

1.简介 在安全厂商日趋成熟的背景下&#xff0c;编写免杀马的难度和成本日益增长。好用新兴的开源项目在短时间内就被分析并加入特征库。笔者调研了部分开源项目&#xff0c;其中也有项目做了类似的分析 [1]&#xff0c;目前能够免杀的项目初步统计&#xff0c;其特征一是star…

MySQL8.0 show create view BUG解析

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a;崔弘晨作者介绍&#xff1a;诺亚财富数据库DBA 擅长数据库SQL优化,喜欢分享技术文章来源&#xff1a;社区投稿…