pool.go

v0.2.0
Doc Versions Source
1
package scribe
2
3
import "sync"
4
5
const (
6
	initialBufSize = 1024
7
	maxBufSize     = 16 * 1024
8
)
9
10
var bufferPool = sync.Pool{
11
	New: func() any {
12
		b := make([]byte, 0, initialBufSize)
13
		return &b
14
	},
15
}
16
17
func getBuffer() *[]byte {
18
	return bufferPool.Get().(*[]byte)
19
}
20
21
func putBuffer(b *[]byte) {
22
	// Only return reasonably sized buffers to the pool
23
	if cap(*b) <= maxBufSize {
24
		*b = (*b)[:0]
25
		bufferPool.Put(b)
26
	}
27
}
28

Source Files