gotosocial/vendor/git.iim.gay/grufwub/fastpath/pool.go

33 lines
491 B
Go
Raw Normal View History

package fastpath
import "sync"
// 1/8 max unix path length
const defaultBufSize = 512
var (
builderPool sync.Pool
once = sync.Once{}
)
func pool() *sync.Pool {
once.Do(func() {
builderPool = sync.Pool{
New: func() interface{} {
builder := NewBuilder(make([]byte, defaultBufSize))
return &builder
},
}
})
return &builderPool
}
func AcquireBuilder() *Builder {
return pool().Get().(*Builder)
}
func ReleaseBuilder(b *Builder) {
b.Reset()
pool().Put(b)
}