blob: 484b342c68cf659941aada89d4092622e7e241c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package core
import "sync"
const (
DefaultBufferSize = 1024
MaxBufferSize = 64 * 1024
)
var bytesPool = sync.Pool{
New: func () any {
b := make([]byte, DefaultBufferSize)
return &b
},
}
func GetBuffer(size int) []byte {
bufPtr := bytesPool.Get().(*[]byte)
buf := *bufPtr
if size > cap(buf) {
buf = make([]byte, size)
}
return buf[:size]
}
func PutBuffer(buf []byte) {
if cap(buf) < MaxBufferSize{
// reset
buf = buf[:0]
bytesPool.Put(&buf)
}
}
|