单值信号的模型可以是只有一个元素的队列,多值信号的模型应该可以考虑为是具有多个元素的队列。从官方给的例子中可以看得到这里有一个优先级的问题,似乎触发的任务的优先级都会高一些,后面我会自己做一个对比测试。
先分析官方的代码:

主要工作:
- 创建一个最大数值10的计数信号,也就是多值信号,初始值0。
- 创建2个任务,第一个优先级是3,用于信号触发;第二个优先级1,周期性任务。
- 创建一个模拟中断。

周期性任务的作用其实是产生中断模拟。
运行效果:

行为分析:中断产生,连续三次信号计数。之后,接收信号的高优先级任务激活,连续三次执行。之后,原来的周期性任务完成执行。
做个优先,周期性任务优先级改成4。这样,三次中断之后,先把中断生成提示打印完,之后触发信号任务。

跟分析的差不多。一般来说,中断优先级高于普通任务,因此推迟处理的中断最好是有一个高一点的优先级。
接下来试一下,如果相应的触发数超过了限制会如何?修改如下:

运行效果:

从效果看,没有报错,只是有一次被忽略。不知道嵌入式的移植版本中是否会有同样的行为?
















