本章介绍怎样使用RTOS的功能模块来实现任务/中断间的同步与通信。

简而言之,就是通过某种机制安排各个任务按指令的顺序执行指定功能的代码,以及提供任务/中断之间的通信。

主要内容

先明确两个概念:同步与通信。

同步

在实际应用中,通常会创建并运行多个任务,任务启动运行后,各自并不是相互独立运行。除了前面章节所讲到的,任务间可能会共享资源外,任务间还可能在执行流程上存在一种相互依赖关系。例如,A任务会在某个时间点等待任务B运行给它发通知,然后才继续往下运行。这种执行上的相互先后功能实现称之为“同步”
任务同步与通信概述 - 图1
这种同步并不限于任务与任务间,还包含中断与任务之间的同步。

通信

在前面讲到的同步中,可能在发送通知进行同步时,还会附带一些具体的数据,告知另一任务具体要做什么。此时,就涉及到任务间的通信,发送的数据称之为消息
当然,也有可能只是简单地在任务之间传递消息进行通信,并不一定只是在同步时通信。
同样的,并不限于任务与任务间通信,还包含中断与任务间通信。

系统支持

RTOS提供了很多功能模块用于实现这些同步与通信功能。

任务同步与通信概述 - 图2
本章介绍以下几种同步与通信模式的介绍。
任务同步与通信概述 - 图3

重点难点

本章各个课时的实例都比较简单,并不贴近实际的例子。
在实际的应用中,多个任务之间的同步与通信关系往往比较复杂,但如果对其进行分解,大多可分解为本课时中所列的例子。
在课时:C7.04 多任务的协同 中,我们会看到一个更加贴合实际的复杂案例,综合了这间课时所介绍的各个例子的应用。

注意事项

常见问题