Merge pull request #23918 from LK4D4/avoid_copy

pkg/pools: avoid copy of sync.Pool
This commit is contained in:
Vincent Demeester 2016-06-24 19:35:43 +02:00 committed by GitHub
commit 754ae20ec5

View file

@ -28,7 +28,7 @@ const buffer32K = 32 * 1024
// BufioReaderPool is a bufio reader that uses sync.Pool. // BufioReaderPool is a bufio reader that uses sync.Pool.
type BufioReaderPool struct { type BufioReaderPool struct {
pool sync.Pool pool *sync.Pool
} }
func init() { func init() {
@ -39,7 +39,7 @@ func init() {
// newBufioReaderPoolWithSize is unexported because new pools should be // newBufioReaderPoolWithSize is unexported because new pools should be
// added here to be shared where required. // added here to be shared where required.
func newBufioReaderPoolWithSize(size int) *BufioReaderPool { func newBufioReaderPoolWithSize(size int) *BufioReaderPool {
pool := sync.Pool{ pool := &sync.Pool{
New: func() interface{} { return bufio.NewReaderSize(nil, size) }, New: func() interface{} { return bufio.NewReaderSize(nil, size) },
} }
return &BufioReaderPool{pool: pool} return &BufioReaderPool{pool: pool}
@ -80,13 +80,13 @@ func (bufPool *BufioReaderPool) NewReadCloserWrapper(buf *bufio.Reader, r io.Rea
// BufioWriterPool is a bufio writer that uses sync.Pool. // BufioWriterPool is a bufio writer that uses sync.Pool.
type BufioWriterPool struct { type BufioWriterPool struct {
pool sync.Pool pool *sync.Pool
} }
// newBufioWriterPoolWithSize is unexported because new pools should be // newBufioWriterPoolWithSize is unexported because new pools should be
// added here to be shared where required. // added here to be shared where required.
func newBufioWriterPoolWithSize(size int) *BufioWriterPool { func newBufioWriterPoolWithSize(size int) *BufioWriterPool {
pool := sync.Pool{ pool := &sync.Pool{
New: func() interface{} { return bufio.NewWriterSize(nil, size) }, New: func() interface{} { return bufio.NewWriterSize(nil, size) },
} }
return &BufioWriterPool{pool: pool} return &BufioWriterPool{pool: pool}