Tim Vaillancourt 8c81334fad Use go modules
2020-08-13 17:34:41 +02:00

37 lines
524 B
Go

package utils
import "sync"
var (
byteSlicePool = sync.Pool{
New: func() interface{} {
return []byte{}
},
}
byteSliceChan = make(chan []byte, 10)
)
func ByteSliceGet(length int) (data []byte) {
select {
case data = <-byteSliceChan:
default:
data = byteSlicePool.Get().([]byte)[:0]
}
if cap(data) < length {
data = make([]byte, length)
} else {
data = data[:length]
}
return data
}
func ByteSlicePut(data []byte) {
select {
case byteSliceChan <- data:
default:
byteSlicePool.Put(data)
}
}