打印

关于uCOS-II的优先级问题

[复制链接]
2209|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sanguankou|  楼主 | 2009-8-20 20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如有三个任务ABC,优先级分别是7 8 9,A肯定先执行,然后B执行,B执行完后要调度,但问题是如果此时A又就绪,A是不是又要执行了?假如A又执行,在执行完了B又就绪,就去执行B,B执行完了A又就绪,又去执行A。。。。。。如此循环,C岂不是永远无法执行?急盼高人解答,谢谢

相关帖子

沙发
wangyan1217| | 2009-8-23 16:17 | 只看该作者
可以用信号量来同步啊。或者任务A的OSTimeDly()时间长点

使用特权

评论回复
板凳
xumingyu| | 2009-12-30 18:20 | 只看该作者
任务C 是可以执行的,应为有OSTimeDly().因为每一个任务执行以后需要等待OSTimeDly(),这时高优先级等待,低优先级就绪的任务就可以执行了。正如2楼所说。

使用特权

评论回复
地板
Fe_ARM| | 2010-1-3 17:47 | 只看该作者
任务A的OSTimeDly()的时间超过任务B的执行时间,C就可以执行

使用特权

评论回复
5
伍笛| | 2010-1-7 09:44 | 只看该作者
理论上是这样的,除非高优先级的任务你调用系统服务函数。

使用特权

评论回复
6
hgjinwei| | 2010-1-10 11:00 | 只看该作者
假如你的A任务完全没有调用系统服务的话, 那么BC任务永远都不会执行. uC总是执行当前就绪的最高优先级任务.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝