Golang连接池的几种实现案例小结
因为TCP的三只握手等等原因,建立一个连接是一件成本比较高的行为。所以在一个需要多次与特定实体交互的程序中,就需要维持一个连接池,里面有可以复用的连接可供重复使用。
而维持一个连接池,最基本的要求就是要做到:thread safe(线程安全),尤其是在Golang这种特性是goroutine的语言中。
实现简单的连接池
type Pool struct {
m sync.Mutex // 保证多个goroutine访问时候,closed的线程安全
res chan io.Closer //连接存储的chan
factory func() (io.Closer,error) //新