gf: github.com/johng-cn/gf/g/container/gqueue Index | Files

package gqueue

import "github.com/johng-cn/gf/g/container/gqueue"

Package gqueue provides a dynamic/static concurrent-safe(alternative) queue.

并发安全动态队列.

特点:
1. 动态队列初始化速度快;
2. 动态的队列大小(不限大小);
3. 取数据时如果队列为空那么会阻塞等待;

Index

Package Files

gqueue.go

type Queue Uses

type Queue struct {
    C chan interface{} // 队列数据读取
    // contains filtered or unexported fields
}

1、这是一个先进先出的队列(chan <-- list);

2、当创建Queue对象时限定大小,那么等同于一个同步的chan并发安全队列;

3、不限制大小时,list链表用以存储数据,临时chan负责为客户端读取数据,当从chan获取数据时,list往chan中不停补充数据;

4、由于功能主体是chan,那么操作仍然像chan那样具有阻塞效果;

func New Uses

func New(limit ...int) *Queue

队列大小为非必须参数,默认不限制

func (*Queue) Close Uses

func (q *Queue) Close()

关闭队列(通知所有通过Pop*阻塞的协程退出)

func (*Queue) Pop Uses

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

从队头先进先出地从队列取出一项数据

func (*Queue) Push Uses

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

将数据压入队列, 队尾

func (*Queue) Size Uses

func (q *Queue) Size() int

获取当前队列大小

Package gqueue imports 2 packages (graph). Updated 2019-03-19. Refresh now. Tools for package owners.