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

Golang —协程池(panjf2000/ants/v2)

Golang —协程池(panjf2000/ants/v2)

  • 1 ants
    • 1.1 基本信息
    • 1.2 ants 是如何运行的(流程图)

1 ants

1.1 基本信息

代码地址:github.com/panjf2000/ants/v2
介绍:ants是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理、goroutine 复用,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。

功能

  • 自动调度海量的 goroutines,复用 goroutines。
  • 定期清理过期的 goroutines,进一步节省资源。
  • 提供了大量有用的接口:任务提交、获取运行中的 goroutine 数量、动态调整 Pool 大小、释放 Pool、重启 Pool。
  • 优雅处理 panic,防止程序崩溃。
  • 资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生 goroutine 并发具有更高的性能。
  • 非阻塞机制。

1.2 ants 是如何运行的(流程图)

在这里插入图片描述

  1. 这里每一个worker其实就是一个单独的协程。Submit()就是将一个任务交给worker(协程)来异步处理,等任务执行完后,worker会将自己交还给协程池。
  2. 倘若回归协程池失败,或者用户提交了一个空的任务包,则该 goWorker 会被销毁,销毁方式是将自身放回协程池的对象池 workerCache. 并且会调用协调器 cond 唤醒一个阻塞等待的协程。
  3. 通过使用 ants,可以实例化一个 goroutine 池,复用 goroutine ,节省资源,提升性能,它会自动管理worker(协程)的创建、回收、释放等工作。
http://www.lryc.cn/news/530400.html

相关文章:

  • 在 crag 中用 LangGraph 进行评分知识精炼-下
  • 基于springboot+vue的哈利波特书影音互动科普网站
  • Cypher入门
  • 使用Z-score进行数据特征标准化
  • 初级数据结构:栈和队列
  • 【思维导图】java
  • Redis脑裂问题详解及解决方案
  • 玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱
  • 【Windows Server实战】生产环境云和NPS快速搭建
  • [ESP32:Vscode+PlatformIO]新建工程 常用配置与设置
  • 【NLP251】Transformer精讲 残差链接与层归一化
  • 康德哲学与自组织思想的渊源:从《判断力批判》到系统论的桥梁
  • SpringBoot 整合 SpringMVC:SpringMVC的注解管理
  • 松灵机器人 scout ros2 驱动 安装
  • 使用 Numpy 自定义数据集,使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
  • MapReduce简单应用(一)——WordCount
  • c语言(关键字)
  • 蓝桥杯思维训练营(一)
  • 【C语言】结构体对齐规则
  • 2025-工具集合整理
  • 快速提升网站收录:利用网站用户反馈机制
  • 图漾相机——Sample_V1示例程序
  • 如何使用C#的using语句释放资源?什么是IDisposable接口?与垃圾回收有什么关系?
  • HTML 字符实体
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_strerror_init()函数
  • 【c++】类与对象详解
  • nginx目录结构和配置文件
  • MacBook Pro(M1芯片)Qt环境配置
  • Kotlin 使用 Springboot 反射执行方法并自动传参
  • 网络安全技术简介