taskQueue 队列循环的启动与结束
一句话结论:Scheduler 会在“队列从空变为非空”时启动宿主回调循环;执行任务到时间片耗尽会让出主线程,若队列仍有任务则再次安排下一轮。
1. 启动:从无到有
- 新任务入队(taskQueue/timerQueue)
- 若当前没有安排宿主回调:注册一次 host callback(常见用 MessageChannel 等)
2. 执行:循环 + 让出
- 取出最高优先级/最早过期任务执行
- 每跑一段检查
shouldYield():需要让出就暂停 - 未完成任务会保留在队列(或重新入队),等待下轮继续
3. 结束:队列清空
- taskQueue 与可转移的 timerQueue 都为空 → 取消/不再安排 host callback