ChunelFeng/CGraph

【A common used C++ & Python DAG framework】 一个通用的、无三方依赖的、跨平台的、收录于awesome-cpp的、基于流图的并行计算框架。欢迎star & fork & 交流

解决的问题

CGraph 提供了一种将复杂任务序列组织并作为有向无环图(DAG)执行的方法。它解决了管理任务依赖关系的问题,能够自动并行执行无依赖的任务,同时确保依赖任务仅在前置条件完成后才运行。

工作原理

用户通过继承 GNode 类并实现 run() 方法来定义任务。这些节点随后被注册到 GPipeline 中,并指定依赖关系。框架的底层调度器负责处理执行流程,支持以下高级逻辑:

  • 并发性:无依赖的节点并行运行。
  • 分组GGroup 支持条件逻辑、循环和聚合执行。
  • 调度:支持任务的暂停、恢复和超时设置。
  • 跨语言:虽然使用纯 C++11 编写,但提供了 Python API(pycgraph),并拥有 C#、Java 和 Go 的原生实现。

适用人群

专为需要跨平台、无依赖框架来构建执行流水线、工作流引擎或任何需要结构化任务调度和并行处理的系统开发人员设计。

特色亮点

  • 零依赖:仅使用纯 C++11 标准库构建。
  • 跨平台:兼容 macOS、Linux、Windows 和 Android。
  • 高级流程控制:支持循环、条件分支和异步执行。
  • 可扩展性:包含面向切面编程(aspect)、函数注入以及管道间基于消息的通信等功能。
  • 性能工具:内置性能分析(perf)和 Graphviz 可视化功能,用于展示执行图。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目