大佬教程收集整理的这篇文章主要介绍了Golang -- 使用 Bufferd channel 实现 线程安全的 pool,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们知道,Go 语言已经提供了 sync.Pool
,但是做的不怎么好,所以有必要来实现一个 Pool
type Pool struct {
pool chan *Client
}
// Create a new Pool
func NewPool(max int) *Pool{
return &Pool{
pool: @H_245_26@make(chan *Client,maX)
}
}
// Get a Client from Pool
func (p *Pool) Borrow() *Client {
var cl *Client
SELEct {
case cl = <-p.pool:
default:
c1 = newClient()
}
return cl
}
// Return the Cliet to the pool
func (p *Pool) Return(cl *Client){
SELEct {
case p.pool<- cl:
default:
// let it go,let it go....
}
}
现在是 Golang1.4了,sync.Pool
还是不可以用吗?
以上是大佬教程为你收集整理的Golang -- 使用 Bufferd channel 实现 线程安全的 pool全部内容,希望文章能够帮你解决Golang -- 使用 Bufferd channel 实现 线程安全的 pool所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。