eq

package module
v0.0.0-...-2c4ad3a Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2015 License: MIT Imports: 1 Imported by: 0

README

#eq elastic, threadsafe queue

A simple queue that expands via container/list and uses channels for Enqueue and Dequeue actions.

Allows enqeue/dequeue via channels that will never block.

###Example:

// channels are buffered to provided size
q := NewEQ(3)

q.Enqueue <- 1
q.Enqueue <- 2
q.Enqueue <- 3
q.Enqueue <- 4
q.Enqueue <- 5
q.Enqueue <- 6

fmt.Println(<-q.Dequeue)
fmt.Println(<-q.Dequeue)
fmt.Println(<-q.Dequeue)
fmt.Println(<-q.Dequeue)
fmt.Println(<-q.Dequeue)
fmt.Println(<-q.Dequeue)

// Output:
// 1
// 2
// 3
// 4
// 5
// 6

Close closes the Enqueue channel and ensures all entries are put in the Dequeue channel before closing it too. Issuing Close followed by range over the Dequeue channel will drain it.

q := NewEQ(3)

q.Enqueue <- 1
q.Enqueue <- 2
q.Enqueue <- 3
q.Enqueue <- 4
q.Enqueue <- 5
q.Enqueue <- 6

q.Close()

for v := range q.Dequeue {
	fmt.Println(<-q.Dequeue)
}

// Output:
// 1
// 2
// 3
// 4
// 5
// 6

DOCS LICENSE

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EQ

type EQ struct {
	Enqueue chan interface{}
	Dequeue chan interface{}
	// contains filtered or unexported fields
}

func NewEQ

func NewEQ(size int) *EQ

func (*EQ) Close

func (q *EQ) Close()

Jump to

Keyboard shortcuts

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