CGraph 技术文档

CGraph 技术文档

CGraph 【A simple C++ DAG framework】 一个简单好用的、无三方依赖的、跨平台的、收录于awesome-cpp的、基于流图的并行计算框架。欢迎star & fork CGraph 项目地址: https://gitcode.com/gh_mirrors/cg/CGraph

安装指南

系统要求

CGraph 是一个跨平台的框架,支持 MacOS, Linux, WindowsAndroid 操作系统。

预备环境

确保您的开发环境已安装了符合C++11或更高标准的编译器。

获取源代码

您可以从 GitHub 下载源代码:

git clone https://github.com/ChunelFeng/CGraph.git

编译与构建

对于大多数操作系统,推荐使用 CMake 进行项目构建。首先,进入项目目录,然后执行以下命令来生成构建文件:

cd CGraph
mkdir build && cd build
cmake ..
make

在 Windows 上,如果你使用 Visual Studio,可以打开 .sln 文件进行编译。

详细编译选项和特定IDE的集成步骤,请参照项目中的 CGraph 编译说明

项目的使用说明

快速入门

创建节点
#include "CGraph.h"
class MyNode : public CGraph::GNode {
public:
    CStatus run() override {
        // 实现节点的运行逻辑
        printf("Node running...\n");
        return CStatus();
    }
};
构建图

main.cpp 中,按照以下步骤创建与执行图:

// 初始化流水线
GPipelinePtr pipeline = GPipelineFactory::create();

// 创建并注册节点
GElementPtr myNode = nullptr;
pipeline->registerGElement<MyNode>(&myNode, {}, "myNode");

// 处理图
pipeline->process();

设置依赖关系

  • 示例中展示了如何创建节点及其依赖性,比如节点B依赖节点A的输出,这通过 registerGElement 函数的第二个参数列表完成。

流水线管理

  • 可通过 GPipelineFactory 来管理和清除流水线实例。

项目API使用文档

注册节点

使用 registerGElement<T>(...) 注册特定类型T的节点,其中T应继承自GNode

节点执行

所有自定义节点需重写 run() 方法,该方法是执行的主要逻辑。

参数传递 (Param)

利用 CGraphParam 类型进行节点间的数据交互。

引入依赖

通过构造依赖链,例如 {a} 表示节点执行前需等待a完成。

切面(GAspect)与适配器(GAdapter)

  • 切面:用于增加额外行为,不修改原有节点逻辑。
  • 适配器:增强单一节点功能,如添加单例模式或定时执行等功能。

事件(GEvent)与消息(GMessage)

  • 事件:允许节点响应特定事件,增加了程序的灵活性。
  • 消息:用于节点间的通讯,支持跨流水线的消息传递。

项目安装方式

安装过程主要涉及克隆仓库和构建两部分,已在“安装指南”中详细阐述。确保遵循相应的编译指示以适应您的开发环境。


此文档提供了使用 CGraph 框架的基础知识,更高级特性和应用场景的详细说明可参考项目提供的教程和B站视频系列。通过实践这些指导,您可以有效地利用 CGraph 构建复杂的异步处理流程和图执行逻辑。

CGraph 【A simple C++ DAG framework】 一个简单好用的、无三方依赖的、跨平台的、收录于awesome-cpp的、基于流图的并行计算框架。欢迎star & fork CGraph 项目地址: https://gitcode.com/gh_mirrors/cg/CGraph

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌林潮Grace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值