♻️

协程池

使用协程池

import ( "github.com/sohaha/zlsgo/zpool" ) func main(){ // 初始化池,支持同时 100 个处理 p := zpool.New(100) // 回收资源 defer p.Close() // 捕获协程池内产生的恐慌 p.PanicFunc(func(err error) { // ... }) // 模拟 1000 个处理 for i := 0; i < 1000; i++ { _ = p.Do(func(){ // 耗时处理 }) } }
 

执行并发

// 如果当前没有空闲协程会直接堵塞 p.Do(func(){})

协程池容量

// 1. 初始化时直接设置池容量与最大容量 p := zpool.New(100,1000) // 2. 手动调整协程池容量,最大值不能大于初始化时设置的最大容量 p.AdjustSize(1000)
 

协程池控制

// 暂停池 p.Pause() // 继续执行 p.Continue() // 关闭池 p.Close()