zoukankan      html  css  js  c++  java
  • Golang 通用连接池库 Golang-Pool

    Golang 实现的连接池

    功能:

    * 连接池中连接类型为interface{},使得更加通用

    * 链接的最大空闲时间,超时的链接将关闭丢弃,可避免空闲时链接自动失效问题

    * 使用channel处理池中的链接,高效

    基本用法

    //factory 创建连接的方法
    factory := func() (interface{}, error) { return net.Dial("tcp", "127.0.0.1:4000") }
    
    //close 关闭链接的方法
    close := func(v interface{}) error { return v.(net.Conn).Close() }
    
    //创建一个连接池: 初始化5,最大链接30
    poolConfig := &pool.PoolConfig{
        InitialCap: 5,
        MaxCap:     30,
        Factory:    factory,
        Close:      close,
        //链接最大空闲时间,超过该时间的链接 将会关闭,可避免空闲时链接EOF,自动失效的问题
        IdleTimeout: 15 * time.Second,
    }
    p, err := pool.NewChannelPool(poolConfig)
    if err != nil {
        fmt.Println("err=", err)
    }
    
    //从连接池中取得一个链接
    v, err := p.Get()
    
    //do something
    //conn=v.(net.Conn)
    
    //将链接放回连接池中
    p.Put(v)
    
    //释放连接池中的所有链接
    p.Release()
    
    //查看当前链接中的数量
    current := p.Len()

    https://github.com/silenceper/pool
  • 相关阅读:
    vmstat
    linux内存机制
    TOP命令
    linux下查阅文件内容cat,more,less,tail
    linux stat命令
    linux修改主机名-IP
    alias
    linux软硬链接
    linux 常用find命令
    ubuntu下交叉编译imagemagick
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7452851.html
Copyright © 2011-2022 走看看