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 ¶
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 ¶
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.