优先队列¶
GFPriorityQueue 是稳定优先队列,适合任务启动顺序、通知候选、编辑器批处理、AI 候选或其它只需要“按优先级取下一个值”的通用场景。
var queue := GFPriorityQueue.new()
queue.push("normal", 0)
queue.push("urgent", 10)
queue.push("front", 0, true)
var next := queue.pop()
默认是高 priority 先弹出;构造时传 false 可改为低 priority 先弹出。相同优先级保持稳定顺序,front=true 可把新条目插到同优先级既有条目前面。
常用操作¶
push() 写入值和整数优先级;peek() / peek_priority() 查看当前顶部;pop() 弹出当前顶部。remove_value()、remove_all() 和 set_priority() 用于取消或调整已排队条目。
queue.push(task, task.priority)
queue.set_priority(task, 20)
if queue.has_value(task):
queue.remove_value(task)
to_array() 和 to_entry_array() 会按弹出顺序导出副本,不会修改当前队列。duplicate_priority_queue(true) 可复制队列和嵌套值。
使用边界¶
GFPriorityQueue 不管理任务状态、线程安全、生命周期、去重策略或业务执行结果。需要两端队列时使用 GFDeque;需要字段查询时使用 GFValueIndex;需要后台线程、资源加载或主线程 apply 队列时使用对应 Utility。