Skip to main content
  1. Projects/

Goroutine pool -- ants

·435 words·3 mins

📖 Introduction #

GitHub #

https://github.com/panjf2000/ants

Library ants implements a goroutine pool with fixed capacity, managing and recycling a massive number of goroutines, allowing developers to limit the number of goroutines in your concurrent programs.

🚀 Features: #

  • Managing and recycling a massive number of goroutines automatically
  • Purging overdue goroutines periodically
  • Abundant APIs: submitting tasks, getting the number of running goroutines, tuning the capacity of the pool dynamically, releasing the pool, rebooting the pool
  • Handle panic gracefully to prevent programs from crash
  • Efficient in memory usage and it even achieves higher performance than unlimited goroutines in Golang
  • Nonblocking mechanism

💡 How ants works #

Flow Diagram #

ants-flowchart-en

Activity Diagrams #

🖥 Use cases #

open-source software #

The open-source projects below do concurrent programming with the help of ants.

  • gnet: A high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go.
  • milvus: An open-source vector database for scalable similarity search and AI applications.
  • nps: A lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
  • siyuan: SiYuan is a local-first personal knowledge management system that supports complete offline use, as well as end-to-end encrypted synchronization.
  • osmedeus: A Workflow Engine for Offensive Security.
  • jitsu: An open-source Segment alternative. Fully-scriptable data ingestion engine for modern data teams. Set-up a real-time data pipeline in minutes, not days.
  • triangula: Generate high-quality triangulated and polygonal art from images.
  • teler: Real-time HTTP Intrusion Detection.
  • bsc: A Binance Smart Chain client based on the go-ethereum fork.
  • jaeles: The Swiss Army knife for automated Web Application Testing.
  • devlake: The open-source dev data platform & dashboard for your DevOps tools.
  • matrixone: MatrixOne is a future-oriented hyper-converged cloud and edge native DBMS that supports transactional, analytical, and streaming workloads with a simplified and distributed database engine, across multiple data centers, clouds, edges and other heterogeneous infrastructures.
  • bk-bcs: BlueKing Container Service (BCS, same below) is a container management and orchestration platform for the micro-services under the BlueKing ecosystem.
  • trueblocks-core: TrueBlocks improves access to blockchain data for any EVM-compatible chain (particularly Ethereum mainnet) while remaining entirely local.
  • openGemini: openGemini is an open-source,cloud-native time-series database(TSDB) that can be widely used in IoT, Internet of Vehicles(IoV), O&M monitoring, and industrial Internet scenarios.
  • AdGuardDNS: AdGuard DNS is an alternative solution for tracker blocking, privacy protection, and parental control.
  • WatchAD2.0: WatchAD2.0 是 360 信息安全中心开发的一款针对域安全的日志分析与监控系统,它可以收集所有域控上的事件日志、网络流量,通过特征匹配、协议分析、历史行为、敏感操作和蜜罐账户等方式来检测各种已知与未知威胁,功能覆盖了大部分目前的常见内网域渗透手法。
  • vanus: Vanus is a Serverless, event streaming system with processing capabilities. It easily connects SaaS, Cloud Services, and Databases to help users build next-gen Event-driven Applications.
  • trpc-go: A pluggable, high-performance RPC framework written in Golang.
  • motan-go: a remote procedure call (RPC) framework for the rapid development of high-performance distributed services.

business companies #

The following companies/organizations use ants in production.