Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Pool ¶
type Pool interface { // Queue submits a unit of work to the pool. It will return an error if the pool is shutdown Queue(func()) error // QueueWithTimeout submits a unit of work to the pool. It will return an error if the pool is shutdown or // if the work cannot be submitted to the work queue before the given timeout elapses QueueWithTimeout(func(), time.Duration) error // Shutdown stops all workers as they finish work and prevents new work from being submitted to the queue Shutdown() }
Pool represents a goroutine worker pool that can be configured with a queue size and min and max sizes.
The pool will start with min size goroutines and will add more if the queue isn't staying empty. After a worker has been idle for a configured time, it will stop
func NewPool ¶
func NewPool(config PoolConfig) (Pool, error)
type PoolConfig ¶
type PoolConfig struct { // The size of the channel feeding the worker pool QueueSize uint32 // The minimum number of goroutines MinWorkers uint32 // The maximum number of workers MaxWorkers uint32 // IdleTime how long a goroutine should be idle before exiting IdleTime time.Duration // Provides a way to join shutdown of the pool with other components. // The pool also be shut down independently using the Shutdown method CloseNotify <-chan struct{} // Provides a way to specify what happens if a worker encounters a panic // if no PanicHandler is provided, panics will not be caught PanicHandler func(err interface{}) }
PoolConfig is used to configure a new Pool
func (*PoolConfig) Validate ¶
func (self *PoolConfig) Validate() error
Click to show internal directories.
Click to hide internal directories.