有一段这样的代码
if(prio == OS_PRIO_SELF)
prio = OSTCBCur->OSTCBPrio;
不难知道,OS_PRIO_SELF = 0xff;
其实,很多人会认为,如果下面的操作时针对本任务的话,本任务传进来的参数prio会等于本任务的真实的优先级,例如10,21...
其实不然,传进来的prio就是等于0xff,这样if判断才会成立,然后把真实的优先级赋给prio。
解释了一段代码中如何处理任务优先级的逻辑,即使传入参数为默认优先级值,通过内部调用和条件判断,最终获取并使用真实优先级。
有一段这样的代码
if(prio == OS_PRIO_SELF)
prio = OSTCBCur->OSTCBPrio;
不难知道,OS_PRIO_SELF = 0xff;
其实,很多人会认为,如果下面的操作时针对本任务的话,本任务传进来的参数prio会等于本任务的真实的优先级,例如10,21...
其实不然,传进来的prio就是等于0xff,这样if判断才会成立,然后把真实的优先级赋给prio。
2848

被折叠的 条评论
为什么被折叠?