gqueue

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2023 License: MulanPSL-2.0 Imports: 3 Imported by: 1

Documentation

Overview

Package gqueue provides dynamic/static concurrent-safe queue.

Features:

1. FIFO queue(data -> list -> chan);

2. Fast creation and initialization;

3. Support dynamic queue size(unlimited queue size);

4. Blocking when reading data from queue;

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Queue

type Queue struct {
	C chan interface{} // Underlying channel for data reading.
	// contains filtered or unexported fields
}

Queue is a concurrent-safe queue built on doubly linked list and channel.

func New

func New(limit ...int) *Queue

New returns an empty queue object. Optional parameter <limit> is used to limit the size of the queue, which is unlimited in default. When <limit> is given, the queue will be static and high performance which is comparable with stdlib channel.

func (*Queue) Close

func (q *Queue) Close()

Close closes the queue. Notice: It would notify all goroutines return immediately, which are being blocked reading using Pop method.

func (*Queue) Len

func (q *Queue) Len() (length int)

Len returns the length of the queue. Note that the result might not be accurate as there's a asynchronous channel reading the list constantly.

func (*Queue) Pop

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

Pop pops an item from the queue in FIFO way. Note that it would return nil immediately if Pop is called after the queue is closed.

func (*Queue) Push

func (q *Queue) Push(v interface{})

Push pushes the data <v> into the queue. Note that it would panics if Push is called after the queue is closed.

func (*Queue) Size

func (q *Queue) Size() int

Size is alias of Len.

Jump to

Keyboard shortcuts

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