DEV Community

邱敬幃 Pardn Chiu
邱敬幃 Pardn Chiu

Posted on

GO-QUEUE@v1.1.2: 基于優先級的並發排程,自動提升優先權

cover


REFACTOR

  • task.go: 將 taskHeap 從 slice 型別重構為 struct,新增 tasksminCap 欄位,支援動態最小容量
  • task.go: 調整 taskHeapLenLessSwapPushPop 方法,適配新的 struct 結構
  • pending.go: 修正 newPending 初始化,根據 workerssize 計算動態最小容量(max(16, min(size/8, size/workers))

PERF

  • task.go: 優化 heap shrink 邏輯,將觸發條件由 capacity > taskHeapMinCap && length < capacity/4 改為 capacity > minCap*4 && length < capacity/taskHeapMinCapRatio
  • task.go: 改進縮減容量計算,使用 max(capacity/4, minCap) 確保不低於最小容量
  • pending.go: 優化 promoteLocked 存取效率,先取得 tasks 欄位避免重複存取

UPDATE

  • new.go: 修正 newPending 呼叫,新增 workers 參數

FIX

  • new.go: 新增 timeout 觸發時的 debug 日誌(task.timeout_triggered),記錄 id、preset、timeout 資訊

©️ 2025 邱敬幃 Pardn Chiu

Top comments (0)