12345678910111213141516171819202122232425262728293031323334 |
- package iox
- import (
- "bytes"
- "sync"
- )
- type BufferPool struct {
- capability int
- pool *sync.Pool
- }
- func NewBufferPool(capability int) *BufferPool {
- return &BufferPool{
- capability: capability,
- pool: &sync.Pool{
- New: func() interface{} {
- return new(bytes.Buffer)
- },
- },
- }
- }
- func (bp *BufferPool) Get() *bytes.Buffer {
- buf := bp.pool.Get().(*bytes.Buffer)
- buf.Reset()
- return buf
- }
- func (bp *BufferPool) Put(buf *bytes.Buffer) {
- if buf.Cap() < bp.capability {
- bp.pool.Put(buf)
- }
- }
|