首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang 通用连接池

Golang 通用连接池

作者头像
李海彬
发布2018-03-23 15:06:37
1.7K0
发布2018-03-23 15:06:37
举报
文章被收录于专栏:Golang语言社区Golang语言社区

资源链接 https://github.com/silenceper/pool

pool

GoDoc

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/fatih/pool 实现,改变以及增加原有的一些功能
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档