sanguankou 发表于 2009-8-20 20:59

关于uCOS-II的优先级问题

假如有三个任务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就可以执行

伍笛 发表于 2010-1-7 09:44

理论上是这样的,除非高优先级的任务你调用系统服务函数。

hgjinwei 发表于 2010-1-10 11:00

假如你的A任务完全没有调用系统服务的话, 那么BC任务永远都不会执行. uC总是执行当前就绪的最高优先级任务.
页: [1]
查看完整版本: 关于uCOS-II的优先级问题