Popularity
3.6
Growing
Activity
4.6
Declining
51
4
8

Programming language: Go
Tags: Goroutines    
Latest version: v1.1.6

workerpool alternatives and similar packages

Based on the "Goroutines" category

Do you think we are missing an alternative of workerpool or a related project?

Add another 'Goroutines' Package

README

πŸ‘¨β€πŸ”§ worker-pool

Build Status Go Report Card codecov FOSSA Status license

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.

πŸ“š Documentation

For examples visit godoc#pkg-examples

For GoDoc reference, visit godoc.org

🚏 HOW TO USE

πŸš… Benchmark

CPU: 3,3 GHz Intel Core i7

RAM: 16 GB 2133 MHz LPDDR3

➜  worker-pool git:(master) βœ— go test -bench=. -cpu=4 -benchmem
goos: darwin
goarch: amd64
BenchmarkWorker1-4                   3000000           453 ns/op          56 B/op          3 allocs/op
BenchmarkWorker1Parallel-4           3000000           506 ns/op          48 B/op          2 allocs/op
BenchmarkWorker100-4                 3000000           485 ns/op          56 B/op          3 allocs/op
BenchmarkWorker100Parallel-4         3000000           444 ns/op          48 B/op          2 allocs/op
BenchmarkWorkerNumCPU-4              3000000           467 ns/op          56 B/op          3 allocs/op
BenchmarkWorkerNumCPUParallel-4      3000000           431 ns/op          48 B/op          2 allocs/op
PASS
ok      worker-pool 11.570s

🏫 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(jobsAmount)

    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)
    // Output:
    // 3
}

πŸ“œ [License](LICENSE.md)

This package is released under the MIT license. See the complete license in the package

FOSSA Status


*Note that all licence references and agreements mentioned in the workerpool README section above are relevant to that project's source code only.