taskpool 协程池

xuesongtao · · 1415 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
#### 1. 介绍 * 支持预分配协程和用多少申请多少 * 分配的协程都有一个生命周期,生命周期到了会被自动回收 * 协程池最少有一个哨兵协程,最多有 maxWork + 1(哨兵) * 协程池会自己释放, 不需要手动释放 #### 2. 使用 ``` pushPool := lib.NewTaskPool("poolName", 10, lib.WithProGoWorker()) defer pushPool.Close() everyTaskHandleSum := 500 l := 50000 pushIds := []string{xxx} totalPage := math.Ceil(float64(l) / float64(everyTaskHandleSum)) for page := 1; page <= int(totalPage); page++ { // 根据切片分页 startIndex, endIndex := lib.GetPapeSliceIndex(int32(page), int32(everyTaskHandleSum), l) tmpArr := pushIds[startIndex:endIndex] i.log.Infof("startIndex: %d, endIndex: %d, total: %d", startIndex, endIndex, l) // 阻塞式 pushPool.Submit(func() { i.PushBatchMsg(tmpArr, info) }) } ``` #### 最后 * 欢迎大佬们指正, 希望大佬给 **star**, [toGit](https://gitee.com/xuesongtao/taskpool/tree/master)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1415 次点击  
加入收藏 微博
1 回复  |  直到
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传