package
Version:
v0.8.2
Opens a new window with list of versions in this module.
Published: Aug 15, 2026
License: Apache-2.0
Opens a new window with license information.
Imports: 1
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
Documentation
¶
Package priority 提供泛型优先级队列:基于二叉堆实现,支持 Push/Pop/Peek/Update/Remove。
典型场景:
- 调度器:按优先级或截止时间取下一个任务
- 匹配系统:按等待时长优先出队
- 延迟队列:按触发时间排序
- 定时器:最近到期的在堆顶
提供两个变体:
- Queue[T]:非并发安全,零开销(适合单 goroutine 使用)
- SyncQueue[T]:内置 RWMutex 的并发安全版本
纯标准库、泛型。
type LessFunc[T any] func(a, b T) bool
LessFunc 比较函数:返回 true 表示 a 优先级高于 b(应排在前面)。
type Queue[T any] struct {
}
Queue 泛型优先级队列(二叉堆)。非并发安全。
New 创建优先级队列。less(a,b) 返回 true 表示 a 排在 b 前面(最小堆:用 <,最大堆:用 >)。
func (q *Queue[T]) Items() []T
Items 返回底层切片的副本(无序,堆序)。
func (q *Queue[T]) Peek() T
Peek 查看优先级最高的元素(不出队)。队列为空时 panic。
func (q *Queue[T]) Pop() T
Pop 取出优先级最高的元素。队列为空时 panic。
func (q *Queue[T]) Push(item T)
Push 入队。
func (q *Queue[T]) PushPop(item T) T
PushPop 等价于 Push+Pop 但更高效(避免不必要的堆调整)。
Update 通知队列第 i 个元素的优先级已变化,重新调整位置。
type SyncQueue[T any] struct {
}
SyncQueue 并发安全的优先级队列。
Peek 查看优先级最高的元素。队列为空返回 zero value 和 false。
Pop 取出优先级最高的元素。队列为空返回 zero value 和 false。
Source Files
¶
Click to show internal directories.
Click to hide internal directories.