https://github.com/efureev/go-poool
Workers pool
https://github.com/efureev/go-poool
jobs pool wokers
Last synced: about 2 months ago
JSON representation
Workers pool
- Host: GitHub
- URL: https://github.com/efureev/go-poool
- Owner: efureev
- License: mit
- Created: 2020-02-06T15:25:34.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-02-07T07:33:12.000Z (about 5 years ago)
- Last Synced: 2025-01-15T09:02:40.764Z (3 months ago)
- Topics: jobs, pool, wokers
- Language: Go
- Size: 13.7 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://travis-ci.com/efureev/go-poool)
[](https://goreportcard.com/report/github.com/efureev/go-poool)
[](https://codecov.io/gh/efureev/go-poool)
[](https://www.codacy.com/manual/efureev/go-poool?utm_source=github.com&utm_medium=referral&utm_content=efureev/go-poool&utm_campaign=Badge_Grade)
[](https://codeclimate.com/github/efureev/go-poool/maintainability)# Workers pool
## Install
```bash
go get -u github.com/efureev/go-poool
```## Examples
```go
package mainimport (
"time""github.com/efureev/go-poool"
"github.com/efureev/go-shutdown"
)func main() {
p := poool.New(3)
ticker := time.NewTicker(3 * time.Second)
fn := createJobFn(100 * time.Millisecond)count := 0
doneJobs := make(chan poool.Job)
defer close(doneJobs)go func(fn func(poool.Job) (interface{}, error)) {
defer println(`timer stop..`)
for {
select {
case <-ticker.C:
count++for i := 0; i < 5; i++ {
j := p.Queue(fn)
println(`>> add job: `, j)
doneJobs <- j
}if count == 5 {
ticker.Stop()
return
}
}
}
}(fn)go func() {
for j := range doneJobs {
j.Wait()println(`<< job done: `, j.Value(), `, error: `, j.Error())
}
}()shutdown.
OnDestroy(func() {
p.Close()
}).
Wait()}
func createJobFn(d time.Duration) poool.JobFn {
return func(poool.Job) (interface{}, error) {
time.Sleep(d)
return true, nil
}
}
```