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

golang优化

工作池模式(提交10个任务给n个goroutine池处理)

package mainimport ("fmt""sync""time""github.com/panjf2000/ants"
)// 模拟一个需要被处理的任务
func myTask(callName string, i int) {time.Sleep(100 * time.Millisecond) // 模拟任务处理耗时fmt.Printf("%s processing task %d\n", callName, i)
}func main() {// 普通goroutine写法,创建10个goroutine处理任务for i := 0; i < 10; i++ {go func() {myTask("goroutine", i)}()}// 提交10个任务给n个goroutine池处理pool, err := ants.NewPool(5) // 创建固定大小的ants池(n个goroutine)if err != nil {fmt.Printf("Failed to create pool: %v\n", err)return}defer pool.Release()var wg sync.WaitGroupfor i := 0; i < 10; i++ {wg.Add(1)task := func() {defer wg.Done()myTask("antsPool", i)}pool.Submit(task)}wg.Wait()
}

对象池模式(对象复用)

package mainimport ("bytes""fmt""sync"
)type Data struct {Value int
}func createData() *Data {return &Data{Value: 42}
}var dataPool = sync.Pool{New: func() any {return &Data{}},
}var bufferPool = sync.Pool{New: func() any {return new(bytes.Buffer)},
}func main() {for i := 0; i < 10; i++ {// 普通对象初始化obj1 := createData()fmt.Println(obj1.Value)// 使用对象池化 -- sync.Pool,使用场景:短期存活、可复用对象obj2 := dataPool.Get().(*Data)obj2.Value = 42fmt.Println(obj2.Value)dataPool.Put(obj2)}// 池化字节缓冲区buf := bufferPool.Get().(*bytes.Buffer)buf.Reset()buf.WriteString("Hello, pooled world!")fmt.Println(buf.String())bufferPool.Put(buf)
}

 

http://www.hskmm.com/?act=detail&tid=30657

相关文章:

  • AI智能体开发!和Kiro、Kimi、PPIO、TEN、memU、MiniMax一起Vibe丨Convo AIRTE2025
  • 实用指南:Transformer模型:深度解析自然语言处理的革命性架构
  • 第一章
  • 生成式AI基础设施面临网络攻击威胁:企业安全新挑战
  • 数据结构笔记
  • 实用指南:SQL Server从入门到项目实践(超值版)读书笔记 27
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 H3C 新华三 定制版
  • LGP8866 [NOIP 2022] 喵了个喵 学习笔记
  • edge每次打开不是用自己的账户,还要选择一次
  • LibreOffice Impress播放不出视频的解决方法
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Inspur 浪潮 定制版
  • Exchange 异常关机后无法登录owa/ecp 以及ems无法连接远程服务器
  • 【GitHub每日速递 251014】Claude Code:用自然语言命令让编码快到飞起!
  • 新项目完结,Ai Agent 智能体、拖拉拽编排!
  • 硅谷大佬揭秘创业者成功法则
  • 2025年南通宠物医院最新权威推荐榜:专业诊疗与暖心服务口碑之选
  • 2025年10月学校家具定制厂家最新推荐排行榜,课桌椅,宿舍床,图书馆家具,教室家具公司推荐!
  • 2025年10月螺杆泵厂家最新推荐排行榜,单螺杆泵,双螺杆泵,三螺杆泵,高效耐用品质之选!
  • 2025年恒温恒湿系统厂家最新推荐榜单,精加工车间/厂房/美术馆/仓库/计算机房/档案室/工业/工厂车间恒温恒湿系统公司推荐
  • 2025年会议系统厂家最新推荐排行榜,专业音视频会议系统,智能会议解决方案,高清视频会议系统公司推荐!
  • RSA密钥生成基准测试深度解析
  • MaxKB 在不同场景下 RAG 引擎与向量存储的应用案例分析
  • C#数组
  • 251013
  • 简谈误差与不确定度
  • 可怕!我的Nodejs系统因为日志打印了Error 对象就崩溃了 Node.js System Crashed Because of Logging an Error
  • 前言
  • 实践
  • 数据结构字符串和图
  • 字典dict