当前位置: 首页 > news >正文

高性能Go协程库ants实战指南(二)

 在高性能Go协程库ants实战指南(一)文章中已经介绍了ants的基本操作,下面介绍ants提供的NewPoolWithFunc方法,NewPoolWithFunc用于创建预定义任务函数的协程池,适用于批量处理相同逻辑的并发任务。

一、NewPoolWithFunc基本用法

通过NewPoolWithFunc方法可以创建指定容量的池并设置任务处理函数,返回的PoolWithFunc对象需要手动释放资源,通过Release方法释放资源。代码示例如下:

func main() {pool, _ := ants.NewPoolWithFunc(10, func(i interface{}) {fmt.Printf("方法处理 %v\n", i)})defer pool.Release()
}

第一参数为池的容量,第二个参数为任务处理函数。

二、任务提交

通过Invoke方法提交参数,这些参数将被传递给预先定义的函数。代码示例如下:

for i := 0; i < 20; i++ {_ = pool.Invoke(i)
}

三、调整协程池容量

 通过调用 Tune()调整协程池容量。代码示例如下:

// 调整协程池容量
pool.Tune(20)

四、完成示例

向协程池中提交任务,传入参数,代码示例:

func main() {var wg sync.WaitGrouppool, _ := ants.NewPoolWithFunc(5, func(i interface{}) {defer wg.Done()fmt.Printf("处理: %v\n", i)})defer pool.Release()for i := 0; i < 20; i++ {wg.Add(1)_ = pool.Invoke(i)}wg.Wait()
}

运行结果如下:

http://www.dtcms.com/a/457540.html

相关文章:

  • [Android] 【最新更新】电子书/小说下载APP 遇见云书V3.2.0
  • golang面经——map模块和sync.Map模块
  • 【Pandas】pandas Index objects DatetimeIndex.dayofyear
  • 10BASE-T1S存在问题,还不能胜过CAN
  • 网站后台seo设置网站建设的安全性
  • 手机网站制作代理搜索引擎及门户网站介绍总结
  • MySQL、Nignx和Docker在Linux上的安装详解
  • Rust中的特征Trait
  • 《SaaS应用技术攻坚:从定制化到运维的六大核心实践拆解》
  • java-JDK8 日期时间类
  • 网站开发前途电影网站建设基本流程
  • 建网站怎么年赚网页设计网站页面搜索的代码
  • Echarts单轴坐标系散点图
  • t检验(t-test):统计学中的显著性检验方法
  • 音乐网站系统
  • Day17_最小文件系统
  • 参数迁移对迭代次数的影响
  • Coze源码分析-资源库-编辑数据库-后端源码-数据存储层
  • Python学习之Day07-08学习(Django网页Web开发)
  • STM32之IWDG-独立看门狗
  • Linux 系统编程:(一)从历史演进到 XShell 远程登录实操
  • 基于cherryusb自制daplink,并对stm32u575进行烧录过程,daplink的执行流进行trace分析
  • 洛阳瀍河建设局网站2021年10月新闻摘抄
  • 学习Java第三十四天——黑马点评48~60
  • 全功能按键非阻塞式实现
  • 学做网站的视频南京谷歌推广
  • iptables
  • STM32+8266+小程序智能家居【小白实战项目】
  • 如何部署一个Java项目
  • 联想乐享赋能笔记本选购新体验:智能解析五大系列,精准匹配用户需求