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

Golang 批量执行/并发执行

提到Golang,都说Golang 天生高并发。所以分享一下我认为的Golang高并发精髓

简单的并发执行util

package util
import ("context""sync"
)type batchRunner struct {BatchSize intctx       context.Contextchannel   chan func()wg        sync.WaitGroup
}func NewBatchRunner(ctx context.Context, batch int) *batchRunner {r := &batchRunner{BatchSize: batch,channel:   make(chan func()),ctx:       ctx,}for batchIdx := 0; batchIdx < r.BatchSize; batchIdx++ {r.wg.Add(1)go func() {for r.ctx.Err() == nil {f, open := <-r.channelif !open && f == nil {break}f()}r.wg.Done()}()}return r
}func (r *batchRunner) Run(handel func()) {r.channel <- handel
}func (r *batchRunner) Wait() {close(r.channel)r.wg.Wait()
}
http://www.lryc.cn/news/136985.html

相关文章:

  • 使用go语言、Python脚本搭建一个简单的chatgpt服务网站。
  • 基于java会议室预约系统设计与实现
  • Ubuntu18.04 交叉编译curl-7.61.0
  • Android相机-HAL子系统
  • PostgreSQL-研究学习-介绍与安装
  • 【Unity细节】Unity制作汽车时,为什么汽车会被弹飞?为什么汽车会一直抖动?
  • Android初学之android studio运行java/kotlin程序
  • 使用自定义 C ++类扩展 TorchScript
  • UITableView自定义TableHeader和TableFooter
  • 【TA 挖坑03】雾效 | 透光材质 | Impostor | 厚度转球谐
  • 案例-基于MVC和三层架构实现商品表的增删改查
  • Java——一个简单的计算器程序
  • 自定义滑动到底部触发指令,elementUI实现分页下拉框
  • 【Windows 常用工具系列 10 -- linux ssh登录脚本输入密码】
  • C#的索引器
  • 软件配置安装(破解)--- maven下载配置
  • python解析小说
  • SQL Server 执行报错: “minus“ 附近有语法错误。
  • kali linux查看局域网下所有IP,并对指定IP攻击
  • 基于QCC_BES 平台的LMS自适应滤波算法实现
  • 大疆飞卡30运载无人机技术分享
  • 单片机的串口通信
  • 【C/C++】STL学习所得
  • leetcode几个数组题
  • 【LeetCode】模拟实现FILE以及认识缓冲区
  • 【Terraform学习】使用 Terraform 将 EC2 实例作为 Web 服务器启动(Terraform-AWS最佳实战学习)
  • WebGL 变量uniform、gl.getUniformLocation、gl.uniform4f及其同族函数相关
  • 【Visual Studio】生成.i文件
  • 本地生活服务平台加盟哪家公司好?
  • css-grid使用