使用协程池
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()