前面几节课时介绍的是怎样进行任务间的单向同步,本节课时介绍如何使用模块进行双向同步。

本节课时只是拿信号量为例,介绍基本的方法。也可使用邮箱、事件标志组等完成类似的功能。

主要内容

在学习过前面使用信号量进行单向同步之后,如果在此基础上使用两个信号量,则可以完成任务间的双向同步。
课程中列举了一个简单的案例,任务A通知任务B工作,任务B完成之后再向任务A报告结果。如下图:
用信号量实现简单双向同步 - 图1
上述过程,通过代码实现如下,执行流程见箭头标注。
用信号量实现简单双向同步 - 图2

重点难点

注意事项

如果需要在同步时附带数据,可使用邮箱等模块。
也可使用事件标志组进行多事件的双向同步。

常见问题