• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

pool: Golang 通用连接池库

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

pool

开源软件地址:

https://gitee.com/silenceper/pool

开源软件介绍:

pool

GoDoc

Golang 实现的连接池

功能:

  • 连接池中连接类型为interface{},使得更加通用
  • 连接的最大空闲时间,超时的连接将关闭丢弃,可避免空闲时连接自动失效问题
  • 支持用户设定 ping 方法,检查连接的连通性,无效的连接将丢弃
  • 使用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() }//ping 检测连接的方法//ping := func(v interface{}) error { return nil }//创建一个连接池: 初始化5,最大空闲连接是20,最大并发连接30poolConfig := &pool.Config{	InitialCap: 5,//资源池初始连接数	MaxIdle:   20,//最大空闲连接数	MaxCap:     30,//最大并发连接数	Factory:    factory,	Close:      close,	//Ping:       ping,	//连接最大空闲时间,超过该时间的连接 将会关闭,可避免空闲时连接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/fatih/pool 实现,改变以及增加原有的一些功能。

License

The MIT License (MIT) - see LICENSE for more details


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap