30 lines
439 B
Go
30 lines
439 B
Go
|
package buffer
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
type Pool struct {
|
||
|
// A Pool must not be copied after first use.
|
||
|
// https://golang.org/pkg/sync/#Pool
|
||
|
buffers sync.Pool
|
||
|
}
|
||
|
|
||
|
func NewPool(bufferSize int) *Pool {
|
||
|
return &Pool{
|
||
|
buffers: sync.Pool{
|
||
|
New: func() interface{} {
|
||
|
return make([]byte, bufferSize)
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (p *Pool) Get() []byte {
|
||
|
return p.buffers.Get().([]byte)
|
||
|
}
|
||
|
|
||
|
func (p *Pool) Put(buf []byte) {
|
||
|
p.buffers.Put(buf)
|
||
|
}
|