sync.Pool数据类型用来保存一组可独立访问的临时对象。这里的“临时”的意思是sync.Pool这个数据类型的特点,也就是说它池化的对象会在未来的某个时候被毫无预兆地移除掉。
sync.Poll一共提供了三个方法,分别是
1)New 用于创建新对象
2)Get 用于获取对象
3)Put 使用完之后归还对象
sync.Poll存在的问题:
1)内存浪费
2)内存泄露
常用的一些开源库
https://github.com/vitessio/vitess/blob/main/go/bucketpool/bucketpool.go
https://github.com/valyala/bytebufferpool
https://github.com/fatih/pool
https://github.com/valyala/fasthttp/blob/9f11af296864153ee45341d3f2fe0f5178fd6210/workerpool.go#L16
https://pkg.go.dev/github.com/gammazero/workerpool?utm_source=godoc
https://pkg.go.dev/github.com/ivpusic/grpool
https://pkg.go.dev/github.com/dpaks/goworkers?utm_source=godoc
此文章为2月Day14学习笔记,内容来源于极客时间《Go 并发编程实战课》