2 Star 2 Fork 7

王布衣 / gox

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
pool.go 615 Bytes
一键复制 编辑 原始数据 按行查看 历史
王布衣 提交于 2024-01-23 11:38 . cache增加泛型的map和pool
package cache
import "sync"
// Pool 二次封装的泛型sync.Pool
type Pool[E any] struct {
once sync.Once // 初始化sync.Pool的New接口
pool sync.Pool // sync.Pool
zero E // 零值
}
// 初始化sync.Pool.New
func (this *Pool[E]) init() {
this.pool = sync.Pool{New: func() any {
var e E
return &e
}}
}
// Acquire 申请内存
func (this *Pool[E]) Acquire() *E {
this.once.Do(this.init)
obj := this.pool.Get().(*E)
*obj = this.zero
return obj
}
// Release 释放内存
func (this *Pool[E]) Release(obj *E) {
this.once.Do(this.init)
if obj == nil {
return
}
this.pool.Put(obj)
}
Go
1
https://gitee.com/quant1x/gox.git
git@gitee.com:quant1x/gox.git
quant1x
gox
gox
v1.21.2

搜索帮助