Goodle 提供了一个简单的生产消费模型的协程池, 不管有多少个任务需要处理,可以确保同一时间最多运行多少个协程处理相同任务,起到一个简单的限流、队列效果。 使用示例如下:
package main
import (
"fmt"
"github.com/text3cn/goodle/goodle"
"github.com/text3cn/goodle/kit/gokit"
"time"
)
func main() {
// 创建一个输出 Hellow World 的 task
task := gokit.NewTask(func(workerId int) error {
fmt.Println("Hellow World")
fmt.Printf("Worker%d execution is completed", workerId)
return nil
})
// 创建一个容量为 3 的协程池,然后不停往池里投递任务,
// worker 会不停的取任务来执行,即不停的打印 Hellow World
pool := gokit.NewPool(3)
go func() {
for {
time.Sleep(time.Second * 1)
pool.EntryChannel <- task
}
}()
// 启动协程池
pool.Run()
}