美文网首页golang
golang 通用链接池

golang 通用链接池

作者: rushui | 来源:发表于2021-01-30 22:16 被阅读0次

    安装

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

        本文链接:https://www.haomeiwen.com/subject/sbtltltx.html