golang 通用链接池


本文摘自网络,作者,侵删。

安装

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 通用链接池

相关阅读 >>

Golang中定义不定长数组的方法

Golang (v2)分布式id生成系统,高性能、高可用、易扩展的id生成服务

分享Go命名规范小记

Golang 各种类型相互转换

Go-carbon 1.2.6 版本发布,优化错误处理机制,弃用出错直接panic的粗暴处理方式

Golang阿里云api请求鉴权

Golang 能开发前端吗?

聊聊storagetapper的pipe

Golang defer什么时候执行

Golang 使用 for 输出九九乘法表

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...