taskDelay(0) 会将 CPU 交给较低优先级的任务吗
如果有3个任务(T1,T2,t3),优先级为P1 P2 P3。
P1 待定。
假设任务 P2 正在执行一些计算。 在执行过程中,它希望将 CPU 让给系统中的其他任务。
在这种情况下 TaskDelay(0) 仍然有效吗? 或者只有当所有任务都具有相同优先级时才有效?
问候, 帕布
If there are 3 tasks(T1,T2,t3) with priority P1 P2 P3.
P1 is pended.
Assume that task P2 is doing some computation. During its execution, it wants to Yield the CPU to other tasks in the system.
Will TaskDelay(0) still works in this condition? or it works only when all the tasks are with same priority?
Regards, Prabhu
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
taskDelay(0) 将不会导致优先级较低的任务控制 CPU。
仅当相同优先级的任务准备好执行时,taskDelay(0) 才会导致上下文切换。
taskDelay(0) 实质上会导致优先级 x 的任务被放置在优先级 x 就绪队列的末尾。 如果它是该优先级的唯一任务,它将保留 CPU。
taskDelay(0) will not cause a lower priority task to take control of the CPU.
Only if a task at the same priority is ready to execute would taskDelay(0) cause a context switch.
taskDelay(0) essentially causes a task at priority x to be put at the end of the priority x ready queue. If it is the only task at that priority, it retains the CPU.