1 Star 0 Fork 2

Fengzhi/gkit

forked from menuiis/gkit 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
iobuffer_pool.go 1002 Bytes
一键复制 编辑 原始数据 按行查看 历史
SongZhibin97 提交于 2021-05-17 11:10 . fix Comment format
package buffer
import "sync"
// localIOPool
var localIOPool IoPool
// IoPool 存储 IoBuffer Pool
type IoPool struct {
// IoBuffer
pool sync.Pool
}
// get 从pool中 获取一个 IoBuffer
func (i *IoPool) get(size int) IoBuffer {
v := i.pool.Get()
if v == nil {
return newIoBuffer(size)
} else {
buf := v.(IoBuffer)
buf.Alloc(size)
buf.Count(1)
return buf
}
}
// put 向pool中回填一个 IoBuffer
func (i *IoPool) put(buf IoBuffer) {
buf.Free()
i.pool.Put(buf)
}
// GetIoPool 从pool中 获取一个 IoBuffer
func GetIoPool(size int) IoBuffer {
return localIOPool.get(size)
}
// PutIoPool 向pool中回填一个 IoBuffer
func PutIoPool(buf IoBuffer) error {
count := buf.Count(-1)
if count > 0 {
// 还有其他引用
return nil
} else if count < 0 {
return ErrDuplicate
}
if p, _ := buf.(*pipe); p != nil {
buf = p.IoBuffer
}
localIOPool.put(buf)
return nil
}
// NewIoBuffer GetIoPool 别名
func NewIoBuffer(size int) IoBuffer {
return GetIoPool(size)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/fengzhi_1/gkit.git
git@gitee.com:fengzhi_1/gkit.git
fengzhi_1
gkit
gkit
b6285053065d

搜索帮助

0d507c66 1850385 C8b1a773 1850385