pooling API

pooling

package

API reference for the pooling package.

Imports

(1)
S
struct

Pool

Pool is a generic object pool with optional max size and finalizer.

pkg/pooling/pool.go:8-14
type Pool struct

Fields

Name Type Description
pool sync.Pool
maxSize int
mu sync.Mutex
active int
finalizer func(T)
T
type

Option

Option configures a Pool.

pkg/pooling/pool.go:17-17
type Option func(*Pool[T])
F
function

New

New creates a new Pool using factory to create items.

Parameters

factory
func() T
opts
...Option[T]

Returns

*Pool[T]
pkg/pooling/pool.go:20-27
func New[T any](factory func() T, opts ...Option[T]) *Pool[T]

{
	p := &Pool[T]{}
	p.pool = sync.Pool{New: func() any { return factory() }}
	for _, opt := range opts {
		opt(p)
	}
	return p
}
F
function

WithMaxSize

WithMaxSize limits the pool to n active items.

Parameters

n
int

Returns

Option[T]
pkg/pooling/pool.go:30-32
func WithMaxSize[T any](n int) Option[T]

{
	return func(p *Pool[T]) { p.maxSize = n }
}
F
function

WithFinalizer

WithFinalizer sets a cleanup function called before items are returned.

Parameters

fn
func(T)

Returns

Option[T]
pkg/pooling/pool.go:35-37
func WithFinalizer[T any](fn func(T)) Option[T]

{
	return func(p *Pool[T]) { p.finalizer = fn }
}