queue

package
v0.0.0-...-ff803ae Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2020 License: Apache-2.0 Imports: 1 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 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