pooling
API
pooling
packageAPI 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 }
}