[讨论] RTX中的信号量问题

Tobey   2016-9-14 15:59 楼主
下面是从RTX指导手册上截的一张图,
示例中给出了两个任务task1和task2,task2等待信号量,task1给task2发送信号量,,,
示例中表示:该信号量确保了FuncA()先于FuncB被调用执行~~
然而task2中当信号量到达时马上就调用了FuncB(),为什么FuncA()会在FuncB()之前被调用执行呢?
semaphore_doubt.png

回复评论 (4)

看不太明白,这个要确定发送信号量的函数执行完成之后有没有涉及到任务的切换,如果没有切换任务的话,那就A函数先于B函数执行
点赞  2016-9-14 16:31
RTX是抢占式的操作系统内核,支持round robin时间片轮转调度,如果task1的优先级大于task2的话,肯定是FunA先执行,否则在发送信号量之后会立即执行task2的。依你的意思task2的优先级是大于等于task1的,否则就算task1发送了信号量task2也是不会执行的,所以你可以吧task2的优先级调节到低于task1的优先级。
亚里士缺德
点赞  2016-9-14 16:48
引用: bobde163 发表于 2016-9-14 16:31
看不太明白,这个要确定发送信号量的函数执行完成之后有没有涉及到任务的切换,如果没有切换任务的话,那就 ...

明白了,我默认俩任务的优先级是一样的了~
点赞  2016-9-17 09:11
引用: 汤权 发表于 2016-9-14 16:48
RTX是抢占式的操作系统内核,支持round robin时间片轮转调度,如果task1的优先级大于task2的话,肯定是FunA ...

嗯,我默认把俩任务的优先级当成是一样的了~
点赞  2016-9-17 09:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复