Notes

taskQueue 队列循环的启动与结束

一句话结论:Scheduler 会在“队列从空变为非空”时启动宿主回调循环;执行任务到时间片耗尽会让出主线程,若队列仍有任务则再次安排下一轮。

1. 启动:从无到有

  • 新任务入队(taskQueue/timerQueue)
  • 若当前没有安排宿主回调:注册一次 host callback(常见用 MessageChannel 等)

2. 执行:循环 + 让出

  • 取出最高优先级/最早过期任务执行
  • 每跑一段检查 shouldYield():需要让出就暂停
  • 未完成任务会保留在队列(或重新入队),等待下轮继续

3. 结束:队列清空

  • taskQueue 与可转移的 timerQueue 都为空 → 取消/不再安排 host callback

关联阅读

cd ..