Simple Goroutine pool
go get github.com/yale8848/gorpool@v0.1.0
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) }
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() }
After set idle duration , the worker will stop it worker go routine
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() }