v1.2.1

排程器生命週期

最後更新


本頁列出各排程器操作在 Start 之前與事件迴圈執行中的行為差異。

各狀態下的操作


操作未啟動執行中
Add直接加入最小堆經 add channel 送入事件迴圈
Remove停用並自最小堆移除經 remove channel 移除
RemoveAll停用全部任務經 removeAll channel 清空最小堆
Start啟動 Worker 池與事件迴圈no-op
Stop回傳立即 cancel 的 context停止迴圈、等待 Worker 結束,回傳於進行中任務結束後 cancel 的 context

Stop 後重新啟動


Stop 後再呼叫 Start 會重新啟動事件迴圈,無依賴任務會繼續觸發。依賴 Worker 不會恢復:Stop 關閉了 Worker 的停止 channel,Start 沿用同一個 channel,新的 Worker 一啟動就結束。依賴任務觸發時仍會送入佇列但不會被判斷,容量 1024 的 Wait 佇列滿了之後事件迴圈會阻塞。重新啟動後再次呼叫 Stop 會再關閉同一個 channel,並以 close of closed channel panic。帶有依賴任務的排程器請以 core.New 重新建立,而非重新啟動。
New、Start、Stop 簽章見 排程器 API。
EN