Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yale8848/gorpool

Simple Goroutine pool
https://github.com/yale8848/gorpool

golang goroutine pool routines

Last synced: about 7 hours ago
JSON representation

Simple Goroutine pool

Awesome Lists containing this project

README

        

# gorpool

Simple Goroutine pool

# How to use

```
go get github.com/yale8848/[email protected]
```

## Simple example

```go

package main

import (
"github.com/yale8848/gorpool"
"time"
"fmt"
)

func main() {

// workerNum is worker number of goroutine pool ,one worker have one goroutine ,
// jobNum is job number of job pool
p := gorpool.NewPool(5, 10).
Start()
defer p.StopAll()
for i := 0; i < 100; i++ {
count := i
p.AddJob(func() {
time.Sleep(10 * time.Millisecond)
fmt.Printf("%d\r\n", count)
})

}
time.Sleep(2 * time.Second)
}

```

## WaitForAll

```go

package main

import (
"fmt"
"github.com/yale8848/gorpool"
"time"
)

func main() {

p := gorpool.NewPool(5, 10).
Start().
EnableWaitForAll(true)
for i := 0; i < 100; i++ {
count := i
p.AddJob(func() {
time.Sleep(10 * time.Millisecond)
fmt.Printf("%d\r\n", count)
})
}
p.WaitForAll()
p.StopAll()
}

```

## SetIdleDuration

After set idle duration , the worker will stop it worker go routine

```go

package main

import (
"fmt"
"github.com/yale8848/gorpool"
"time"
)

func main() {

p := gorpool.NewPool(5, 10).
SetIdleDuration(3 * time.Second).
Start().
EnableWaitForAll(true)
for i := 0; i < 100; i++ {
count := i
p.AddJob(func() {
time.Sleep(5 * time.Second)
fmt.Printf("%d\r\n", count)
})
}
p.WaitForAll()
p.StopAll()
}

```

## Doc

[gorpool doc](https://godoc.org/github.com/yale8848/gorpool)