golang 通用链接池

如水网 · · 569 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

安装

go get github.com/go-basic/pool

实现接口

type DemoCloser struct {
    Conn     net.Conn
    activeAt time.Time
}

func (p *DemoCloser) Close() error {
    return p.Conn.Close()
}

func (p *DemoCloser) GetActiveTime() time.Time {
    return p.activeAt
}

使用

    p, err := pool.NewGenericPool(2, 5, 30*time.Second, func() (poolable pool.Poolable, e error) {
        conn, err := net.Dial("tcp", addr)
        if err != nil {
            return nil, err
        }
        return &DemoCloser{Conn: conn, activeAt: time.Now()}, nil
    })
    if err != nil {
        fmt.Println("err=", err)
    }

    //从连接池中取得一个连接
    v, err := p.Get()

    //todo
    //conn=v.(net.Conn)

    //将连接放回连接池中
    p.Put(v)

    //释放连接池中的所有连接
    //p.Release()

    //查看当前连接中的数量
    current := p.Len()
    fmt.Println("len=", current)

更多见example

https://github.com/go-basic/pool/blob/master/example/main.go


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:如水网

查看原文:golang 通用链接池

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

569 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传