插队的影响、与中断的区别
一句话结论:“插队”是调度层面选择更高优先级任务;“中断/让出”是执行层面在安全点暂停,把控制权还给宿主(浏览器)以便渲染与响应输入。
1. 插队(Preemption)
- 触发条件:更高优先级更新/任务出现
- 行为:下一轮调度改为处理高优先级 lanes
- 结果:低优先级工作可能被推迟,甚至放弃重做
2. 中断(Yield / Interruption)
- 触发条件:达到时间片预算,
shouldYield()返回 true - 行为:暂停 workLoop,把剩余工作留到下一次继续
- 结果:让浏览器有机会处理输入、布局、绘制等
3. 为什么要区分
- 插队解决“谁先做”的问题(优先级)
- 中断解决“别一次做太久”的问题(响应性)