Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。