2023-01-05 12:45:09 +01:00
|
|
|
package pool
|
|
|
|
|
|
|
|
import (
|
2023-01-11 09:13:59 +01:00
|
|
|
"context"
|
2023-01-05 12:45:09 +01:00
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/alitto/pond"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Opts struct {
|
|
|
|
ConcurrencyFactor int
|
|
|
|
PoolQueueSize int
|
|
|
|
}
|
|
|
|
|
2023-01-11 09:13:59 +01:00
|
|
|
// NewPool creates a fixed size (and buffered) go routine worker pool.
|
|
|
|
func NewPool(ctx context.Context, o Opts) *pond.WorkerPool {
|
2023-01-05 12:45:09 +01:00
|
|
|
return pond.New(
|
|
|
|
o.ConcurrencyFactor,
|
|
|
|
o.PoolQueueSize,
|
|
|
|
pond.MinWorkers(o.ConcurrencyFactor),
|
|
|
|
pond.IdleTimeout(time.Second*1),
|
2023-01-11 09:13:59 +01:00
|
|
|
pond.Context(ctx),
|
2023-01-05 12:45:09 +01:00
|
|
|
)
|
|
|
|
}
|