1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
void OS_RdyListinsert (OS_TCB *p_tcb),里面为啥要根据任务的优先级是否是当前优先级,如果是当前优先级就尾插到就绪任务列表,如果不是就头插。我想问WHY?另外吐槽我粘贴代码过来是C格式不是不行?
void OS_RdyListInsert (OS_TCB *p_tcb) { OS_PrioInsert(p_tcb->Prio); if (p_tcb->Prio == OSPrioCur) { /* Are we readying a task at the same prio? */ OS_RdyListInsertTail(p_tcb); /* Yes, insert readied task at the end of the list */ } else { OS_RdyListInsertHead(p_tcb); /* No, insert readied task at the beginning of the list */ } #if (defined(TRACE_CFG_EN) && (TRACE_CFG_EN > 0u)) TRACE_OS_TASK_READY(p_tcb); /* Record the event. */ #endif } |
|
相关推荐
5个回答
|
|
我觉得这样可能是因为运行的永远是最新就绪的任务。
|
|
|
|
|
|
首先如果是当前优先级的话,也就是ucosiii允许了时间片轮转调度,所以插入就绪标表的尾端。ucosiii在做任务切换的时候总是切换到该优先级下的就绪表的第一个任务。当不是同一个优先级的时候,不确定该优先级是否有任务就绪,所以直接插入到头部。
|
|
|
|
所以我的问题还是为啥不都搞成尾插,新加个任务排在该优先级就绪任务链表最前面,不知道为啥这么干?
|
|
|
|
看代码的话不就是如果该优先级下的就绪任务为0则插入头,如果不为0插入入尾啊。
|
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1072浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:23 , Processed in 1.125084 second(s), Total 56, Slave 47 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号