参考链接:大数据Ants
go ants学习

比如多文件处理,常用

package patternhandleimport ("fmt""sync""sync/atomic""time""github.com/panjf2000/ants"
)var sum int32func myFunc(i interface{}) {n := i.(int)   // 你要处理字符串就转成字符串,比如多文件处理atomic.AddInt32(&sum, int32(n))fmt.Printf("run with %d\n", n)}func demoFunc() {time.Sleep(10 * time.Millisecond)fmt.Println("Hello World!")// return nil
}// 两种协程池的开启方式 例子
func ANtt() {runTimes := 11// use the common poolvar wg sync.WaitGroupp1, _ := ants.NewPool(4) // 不设置就是没得默认限制,会以最大的开for i := 0; i < runTimes; i++ {wg.Add(1)p1.Submit(func() {demoFunc()wg.Done()})}wg.Wait()fmt.Printf("running goroutines: %d\n", p1.Running())fmt.Printf("finish all tasks.\n")// use the pool with a function// set 10 the size of goroutine poolp, _ := ants.NewPoolWithFunc(4, func(i interface{}) {myFunc(i)wg.Done()})// submit tasksfor i := 0; i < runTimes; i++ {wg.Add(1)// p.Serve(i)p.Invoke(i)}wg.Wait()fmt.Printf("running goroutines: %d\n", p.Running())p.Release()fmt.Printf("release gorout running goroutines: %d\n", p.Running())fmt.Printf("finish all tasks, result is %d\n", sum)
}

测试

func TestANtt(t *testing.T) {ANtt()
}

go语言ants协程池相关推荐

  1. Go语言 有缓冲通道、协程池

    文章目录 导言 有缓冲通道.线程池 有缓冲通道是什么? 例子 另一个例子 死锁 容量 vs 长度 WaitGroup 实现协程池 1. 创建数据结构 2. 创建相关函数 1. `digits`函数 2 ...

  2. go 协程池 ants库分析

    简介 相比于创建多个线程,goroutine 更轻量.资源占用更少.切换速度更快.无线程上下文切换开销更少.但是受限于资源总量,系统中能够创建的 goroutine 数量也是受限的.默认每个 goro ...

  3. Golang - 协程池 ants.NewPoolWithFunc使用介绍

    前言 ants是一个高性能的协程池,实现了对大规模goroutine的调度管理.goroutine复用,允许使用者在开发并发程序的时候限制协程数量,复用资源,达到更高效执行任务的效果. 提示:以下是本 ...

  4. 白话 Golang 协程池

    文章目录 1.何为并发 2.并发的好处 3.Go 如何并发 4.G-P-M 调度模型 5.Go 程的代价 6.协程池的作用 7.简易协程池的设计&实现 8.开源协程池的使用 9.小结 参考文献 ...

  5. 连接池和协程池为何能提升并发能力?

    你有没有发现,"内存池"和"进程池"都带有"池"字?其实,这两种技术都属于"池化技术".它通常是由系统预先分配一批资源并 ...

  6. Golang的协程池设计

    转载地址:https://studygolang.com/articles/15477 使用Go语言实现并发的协程调度池阉割版,本文主要介绍协程池的基本设计思路,目的为深入浅出快速了解协程池工作原理, ...

  7. 深入浅出 Golang 协程池设计

    使用Go语言实现并发的协程调度池阉割版,本文主要介绍协程池的基本设计思路,目的为深入浅出快速了解协程池工作原理,与真实的企业协程池还有很大差距,本文仅供学习参考. 一.何为并发,Go又是如何实现并发? ...

  8. golang协程池设计

    https://segmentfault.com/a/1190000018193161 Why Pool go自从出生就身带"高并发"的标签,其并发编程就是由groutine实现的 ...

  9. 一期每日一GO群分享-flag、viper、协程池、异常处理

    1.11 flag库 今天介绍一个库flag,命令行程序常用,用来接受参数的. var (intflag intboolflag boolstringflag string )func init() ...

最新文章

  1. android o 全机型推送,氢OS(Android O)官方更新推送 一加两款机型完成适配
  2. 转载几个和职业建议相关的文章
  3. zoj——3556 How Many Sets I
  4. cisco-ccna-第九章测试-work1-汉语
  5. Java中利用socket实现简单的服务端与客户端的通信(入门级)
  6. iOS __block 与 __weak
  7. java json特殊字符处理_java json字符串传递给 js 时 特殊字符转义错误 研究
  8. linux 内核 报错,根据epc定位linux内核报错.pdf
  9. Backtrader多周期回测
  10. Flutter mac 环境搭建 最简教程
  11. 关于java网络编程的实例代码
  12. 模式实例之——访问者实例
  13. Java 读取Oracle数据库中的Date日期型怎么去掉秒后面的0
  14. 字符串部分函数的实现
  15. 为什么我们做不到【领导篇】作者:金刚波
  16. linux img提取文件系统,Linux系统获取开发板的文件系统并打包成img文件
  17. 【干货】32个EMC标准电路分享!
  18. 经济应用文写作【5】
  19. SSIM PSNR db
  20. Android打码函数,Android 马赛克(Mosaics)效果

热门文章

  1. linkeybpm-联科BPM 使用总结
  2. Optional int parameter ‘id‘ is present but cannot be translated into a null
  3. 二极管及其基本电路总结
  4. 利用matplotlib绘制条形图,直观呈现2019年电影票房数据
  5. webservice24--基于契约优先开发用户管理小功能--实现wsdl
  6. 计算统计单元内建筑密度
  7. sqlzoo - 7 More JOIN operations
  8. WarGame系列之Natas(Web安全)通关指北(初级篇0-10)详细版
  9. 多节点CDN缓存加速系统wdcdn2.2版本发布(20111115)
  10. 自己动手做自动发布系统三