Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

yale8848/gorpool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

16 Commits

Repository files navigation

gorpool

Simple Goroutine pool

How to use

go get github.com/yale8848/gorpool@v0.1.0

Simple example

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

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

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

About

Simple Goroutine pool

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /