freertos学习笔记(十)事件标志组
事件标志组
相当于用户平时定义的Flag,事件标志,不过freertos支持将该标志组作为启动task的条件
概述
- 分为8位和24位的模式(通过设置宏来配置)
- 每一位有0和1两个状态
用法
- 用于平常程序的标记位
- 用于task之间的同步
- 任务a先到达同步点,进入阻塞态
- 设置任务a的事件标记位
- 检查其他任务的事件标记位(发现任务b没标记)
- 等待其他任务的事件标记位(进入阻塞状态)
- 任务b判断事件标志,判断通过后,释放该标志,进入同步
- 设置任务b的事件标记位(任务a被同步)
- 检查其他任务的事件标记位(发现任务a已标记)
- 与任务a同步运行
- 任务a先到达同步点,进入阻塞态
事件标志判断方法
- 多个标志位同时满足(多个task同时到达同步点)
- 多个标志位有一个满足(其中一个task到达同步点)
two Challenges
- 每一个标志位分工明确。避免出现两个任务同时等待一个标志位的情况,出现标志位争抢(race conditions)
- 避免不确定行为(大概意思和1一样)[详见]
不确定性行为: 程序的执行路径或时间不是固定的,它可能依赖于多种不可预知的因素,如任务调度顺序、中断到达时间等。在实时系统中,非确定性行为是不被接受的,因为它可能导致系统无法满足其时间约束。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架