ucos两个任务切换的问题! 高优先级的任务A中创建了一个比他低一级的任务B。然后A会继续执行B之后的语句吗

高优先级的任务A中创建了一个比他低一级的任务B。然后A会继续执行B之后的语句吗。(我觉得任务B创建后并没有运行所以继续执行A任务的语句)。当A任务执行到while(1){... 高优先级的任务A中创建了一个比他低一级的任务B。然后A会继续执行B之后的语句吗 。(我觉得任务B创建后并没有运行所以继续执行A任务的语句)。当A任务执行到
while(1)
{
OSTimeDly();//此次会发生任务调度吗?切换到任务B
语句X; //如果不会这是执行这句。那什么时候才能切换到任务B呢
}
展开
 我来答
Leekp
2012-05-31
知道答主
回答量:12
采纳率:0%
帮助的人:12.8万
展开全部
如果你看源码的话,会发现OSTimeDly()调用了任务调度程序OSSched(),由它来判断是否允许任务调度。如果允许调度则从就绪任务列表OSRdyTbl[]中找到就绪状态优先级最高的任务,然后执行OS_TASK_SW()完成上下文切换,如果TASK_B优先级是就绪态最高的话,会执行B。
任务A的延时时间存在任务控制块 OSTCBCur->OSTCBDly中,时钟节拍函数OSTimeTick()每执行一次,--OSTCBDly,减至零后放入OSRdyTbl[],当再次发生任务调度,且A是最高优先级的就绪任务,OS就会回到任务A,然后执行X。
阅读源码的上述函数,你就明白原因了。
ch314156
2012-05-26 · TA获得超过4377个赞
知道小有建树答主
回答量:2036
采纳率:100%
帮助的人:1022万
展开全部
OSTimeDly();中会调度到B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式