我的理解是udelay()并不阻止调度器在压力情况下将CPU分配给更高优先级的任务。
不过,我认为,我对真正原因的了解有些肤浅,希望能对此有更深入的了解。
最佳答案
见delays - Information on the various kernel delay / sleep mechanisms。
没有人说udelay()
是不可靠的,恰恰相反,它是原子上下文中的推荐方式,也是在非原子上下文中睡眠几微秒的推荐方式。
虽然您说得没错,udelay()并不阻止调度器在压力情况下将CPU分配给更高优先级的任务,但它通过忙于等待而不是从一开始就将CPU分配给其他(可能是同等优先级的)任务来创建这样的压力,这就是为什么不建议使用更长的延迟。