Vardius - worker-pool
Go simple async worker pool.
ABOUT
Contributors:
Want to contribute ? Feel free to send pull requests!
Have problems, bugs, feature ideas? We are using the github issue tracker to manage them.
HOW TO USE
Basic example
package main
import (
"fmt"
"sync"
"github.com/vardius/worker-pool"
)
func main() {
var wg sync.WaitGroup
poolSize: 1
jobsAmount: 3
workersAmount: 2
// create new pool
pool := workerpool.New(poolSize)
out := make(chan int, jobsAmount)
pool.Start(workersAmount, func(i int) {
defer wg.Done()
out <- i
})
wg.Add(workersAmount)
for i := 0; i < jobsAmount; i++ {
pool.Delegate(i)
}
go func() {
// stop all workers after jobs are done
wg.Wait()
close(out)
pool.Stop()
}()
sum := 0
for n := range out {
sum += n
}
fmt.Println(sum)
}
License
This package is released under the MIT license. See the complete license in the package: