README ¶ easy_go_pool 特性 1.动态扩容至指定size 2.size可异步改变:AdjustSize(workNum uint16) 3.可异步关闭也可同步等待任务完成后关闭 适合对任务处理时间短任务量有限的工作进行处理 go_pool 特性 1.动态扩容至指定size 2.size可异步改变:AdjustSize(workNum uint16) 3.当任务量小于需要时会按设置的间隔时间动态缩容 4.可异步关闭也可同步等待任务完成后关闭 适合对任务处理时间较长任务量不确定的工作进行处理 示例代码 package main import ( epool "github.com/zhaomin1993/pool/easy_go_pool" "log" "math/rand" "time" ) type Score struct { Num int } func (s Score) Do() { if s.Num%10000 == 0 { log.Println("num:", s.Num) } if s.Num%2 == 0 { panic(s.Num) } time.Sleep(time.Millisecond * 100) } func main() { //创建协程池 pool := epool.NewWorkerPool(1000, 1100) defer pool.Close() //关闭协程池 pool.OnPanic(func(msg interface{}) { //log.Println("error:", msg) }) datanum := 100 * 100 * 10 for i := 1; i <= datanum; i++ { //接收任务 if err := pool.Accept(Score{Num: i}); err != nil { log.Println("err:\t", err) break } if i%10000 == 0 { log.Println("send num:", i) randNum := rand.Intn(10) + 1000 //调整协程池大小 pool.AdjustSize(uint16(randNum)) } } } benchmark 测试 Expand ▾ Collapse ▴ Documentation ¶ Index ¶ type Pool Constants ¶ This section is empty. Variables ¶ This section is empty. Functions ¶ This section is empty. Types ¶ type Pool ¶ type Pool interface { OnPanic(onPanic func(msg interface{})) Accept(job internal.Job) (err error) Len() uint16 AdjustSize(workNum uint16) Pause() Continue(num uint16) Close() } Source Files ¶ View all Source files pool.go Directories ¶ Show internal Expand all Path Synopsis easy_go_pool go_pool internal Click to show internal directories. Click to hide internal directories.