gxpool

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package pool implements a pool of Object interfaces to manage and reuse them.

Package pool implements a pool of Object interfaces to manage and reuse them.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrClosed is the error resulting if the pool is closed via pool.Close().
	ErrEmpty  = errors.New("pool is empty")
	ErrClosed = errors.New("pool is closed")
)

Functions

This section is empty.

Types

type Keeper

type Keeper struct {
	// contains filtered or unexported fields
}

func NewKeeper

func NewKeeper(workerNum int) *Keeper

func (*Keeper) Close

func (k *Keeper) Close()

func (*Keeper) PendingTaskNum

func (k *Keeper) PendingTaskNum() int

func (*Keeper) PushTask

func (k *Keeper) PushTask(t Task, timeout time.Duration) error

func (*Keeper) Stop

func (k *Keeper) Stop()

type Object

type Object interface {
	Close() error
}

Object is Pool object

type Pool

type Pool interface {
	// Get returns a new connection from the pool. Closing the connections puts
	// it back to the Pool. Closing it when the pool is destroyed or full will
	// be counted as an error.
	Get() (Object, error)

	Put(Object) error

	// Close closes the pool and all its connections. After Close() the pool is
	// no longer usable.
	Close()

	// Len returns the current number of connections of the pool.
	Len() int
}

Pool interface describes a pool implementation. A pool should have maximum capacity. An ideal pool is threadsafe and easy to use.

func NewChannelPool

func NewChannelPool(poolLen int) (Pool, error)

NewChannelPool returns a new pool based on buffered channels maximum capacity. Pool doesn't fill the Pool until the (Pool)Put() is called. If there is no new Object available in the pool, (Pool)Get will return nil and u should create a new one by yourself.

type Task

type Task func(workerID int)

type Worker

type Worker struct {
	ID int
	// contains filtered or unexported fields
}

func NewWorker

func NewWorker(id int, k *Keeper) *Worker

type WorkerPool

type WorkerPool []*Worker

func (WorkerPool) Len

func (p WorkerPool) Len() int

func (WorkerPool) Less

func (p WorkerPool) Less(i, j int) bool

func (*WorkerPool) Pop

func (p *WorkerPool) Pop() interface{}

func (*WorkerPool) Push

func (p *WorkerPool) Push(w interface{})

func (WorkerPool) Swap

func (p WorkerPool) Swap(i, j int)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL