Documentation
¶
Overview ¶
Package pool contains helpers for pooling structures distinguishable by size.
Quick example:
import "github.com/gobwas/pool" func main() { // Reuse objects in logarithmic range from 0 to 64 (0,1,2,4,6,8,16,32,64). p := pool.New(0, 64) buf, n := p.Get(10) // Returns buffer with 16 capacity. if buf == nil { buf = bytes.NewBuffer(make([]byte, n)) } defer p.Put(buf, n) // Work with buf. }
There are non-generic implementations for pooling: - pool/pbytes for []byte reuse; - pool/pbufio for *bufio.Reader and *bufio.Writer reuse;
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Option ¶
type Option func(Config)
Option configures pool.
func WithIdentitySizeMapping ¶
func WithIdentitySizeMapping() Option
func WithLogSizeMapping ¶
func WithLogSizeMapping() Option
func WithLogSizeRange ¶
WithSizeLogRange returns an Option that will add logarithmic range of pooling sizes containing [min, max] values.
func WithSizeMapping ¶
type Pool ¶
type Pool struct {
// contains filtered or unexported fields
}
Pool contains logic of reusing objects distinguishable by size in generic way.
func New ¶
New creates new Pool that reuses objects which size is in logarithmic range [min, max].
Note that it is a shortcut for Custom() constructor with Options provided by WithLogSizeMapping() and WithLogSizeRange(min, max) calls.