forked from mirrors/gotosocial
e43a46e982
Signed-off-by: kim (grufwub) <grufwub@gmail.com>
32 lines
491 B
Go
32 lines
491 B
Go
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)
|
|
}
|