queue

package
v1.17.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 22, 2022 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

Package queue provides a fast, ring-buffer queue based on the version suggested by Dariusz Górecki. Using this instead of other, simpler, queue implementations (slice+append or linked list) provides substantial memory and time benefits, and fewer GC pauses.

The queue implemented here is as fast as it is for an additional reason: it is *not* thread-safe.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Item

type Item struct {
	Value    interface{} // The Value of the item; arbitrary.
	Priority int         // The Priority of the item in the queue.
	// The Index is needed by update and is maintained by the heap.Interface methods.
	Index int // The Index of the item in the heap.
}

An Item is something we manage in a Priority queue.

type PriorityQueue

type PriorityQueue struct {
	// contains filtered or unexported fields
}

func (*PriorityQueue) Init

func (pq *PriorityQueue) Init(initItemSliceNum int)

参数是数据大小

func (*PriorityQueue) Len

func (pq *PriorityQueue) Len() int

func (*PriorityQueue) Pop

func (pq *PriorityQueue) Pop() *Item

func (*PriorityQueue) Push

func (pq *PriorityQueue) Push(item *Item)

func (*PriorityQueue) Remove

func (pq *PriorityQueue) Remove(item *Item)

func (*PriorityQueue) Update

func (pq *PriorityQueue) Update(item *Item, value interface{}, priority int)

type PriorityQueueSlice

type PriorityQueueSlice []*Item

A PriorityQueueSlice implements heap.Interface and holds Items.

func (PriorityQueueSlice) Len

func (pq PriorityQueueSlice) Len() int

func (PriorityQueueSlice) Less

func (pq PriorityQueueSlice) Less(i, j int) bool

func (*PriorityQueueSlice) Pop

func (pq *PriorityQueueSlice) Pop() interface{}

func (*PriorityQueueSlice) Push

func (pq *PriorityQueueSlice) Push(x interface{})

func (PriorityQueueSlice) Swap

func (pq PriorityQueueSlice) Swap(i, j int)

func (*PriorityQueueSlice) Update

func (pq *PriorityQueueSlice) Update(item *Item, value interface{}, priority int)

update modifies the Priority and Value of an Item in the queue.

type Queue

type Queue struct {
	// contains filtered or unexported fields
}

Queue represents a single instance of the queue data structure.

func NewQueue

func NewQueue() *Queue

New constructs and returns a new Queue.

func (*Queue) Add

func (q *Queue) Add(elem interface{})

Add puts an element on the end of the queue.

func (*Queue) Get

func (q *Queue) Get(i int) interface{}

Get returns the element at index i in the queue. If the index is invalid, the call will panic. This method accepts both positive and negative index values. Index 0 refers to the first element, and index -1 refers to the last.

func (*Queue) Length

func (q *Queue) Length() int

Length returns the number of elements currently stored in the queue.

func (*Queue) Peek

func (q *Queue) Peek() interface{}

Peek returns the element at the head of the queue. This call panics if the queue is empty.

func (*Queue) Pop

func (q *Queue) Pop() interface{}

Remove removes and returns the element from the front of the queue. If the queue is empty, the call will panic.

type SyncQueue

type SyncQueue struct {
	// contains filtered or unexported fields
}

func NewSyncQueue

func NewSyncQueue() *SyncQueue

func (*SyncQueue) Add

func (q *SyncQueue) Add(elem interface{})

func (*SyncQueue) Get

func (q *SyncQueue) Get(i int) interface{}

func (*SyncQueue) Len

func (q *SyncQueue) Len() int

func (*SyncQueue) Peek

func (q *SyncQueue) Peek() interface{}

func (*SyncQueue) Pop

func (q *SyncQueue) Pop() interface{}

func (*SyncQueue) RLockRange

func (q *SyncQueue) RLockRange(f func(interface{}))

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL