概述
我们已经知道 go 语言提供了 sync.pool,但是做的不怎么好,所以有必要自己来实现一个 pool。
给我看代码:
type pool struct {
pool chan *client
}
// 创建一个新的 pool
func newpool(max int) *pool {
return &pool{
pool: make(chan *client, max),
}
}
// 从 pool 里借一个 client
func (p *pool) borrow() *client {
var cl *client
select {
case cl = <-p.pool:
default:
cl = newclient()
}
return cl
}
// 还回去
func (p *pool) return(cl *client) {
select {
case p.pool <- cl:
default:
// let it go, let it go...
}
}
总结
现在不要使用 sync.pool
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!
网友评论