v1.1.3

佇列生命週期

最後更新


本頁說明佇列的三個狀態、各狀態允許哪些呼叫,以及 Shutdown 如何在期限內排空堆。

Queue 狀態


狀態是一個 atomic.Uint32,所有轉換都透過 CompareAndSwap。
狀態進入方式EnqueueStartShutdown
CreatedNew允許(任務排隊等待)轉為 Running轉為 Closed
RunningStart允許queue already started轉為 Closed
ClosedShutdownstaging queue is closedqueue already closed回傳 nil

關閉


進入 Closed 後,Shutdown 讓 Worker 持續取任務直到堆清空,再取消根 ctx。若 Shutdown 的 ctx 先到期,會立即取消根 ctx 並回傳 shutdown timeout: N tasks remaining。
情境結果
期限內排空所有排隊中的任務都會執行;回傳 nil
期限先到執行中與仍在排隊的任務拿到已取消的 ctx;回傳 shutdown timeout: N tasks remaining
重複呼叫立即回傳 nil
在 Start 前呼叫轉為 Closed 並回傳 nil;排隊中的任務不會執行
EN