代码拉取完成,页面将自动刷新
同步操作将从 menuiis/gkit 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
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)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。