GitHub-Chinese-Top-Charts icon indicating copy to clipboard operation
GitHub-Chinese-Top-Charts copied to clipboard

【项目自荐】一款简单好用的DAG调度框架

Open ChunelFeng opened this issue 3 years ago • 6 comments

  • 项目地址:https://github.com/ChunelFeng/CGraph

  • 类别:C++

  • 项目后续更新计划: 提供跨进程通信机制,提供流式处理机制

  • 项目描述: 一款基于C++17的跨平台DAG调度框架。用户可以通过自定义节点(node)和组(group),来实现任意类型的图调度功能。

  • 推荐理由: 纯中文文档、中文注释项目。无任何第三方依赖,简单好上手。通过流水线编排,实现了依赖节点依次执行、无依赖节点并发执行的逻辑。此外,还提供了循环执行、条件判断、切面编程、自定义分区、函数注入、守护任务、流图自动优化等功能。

    代码风格高度统一,便于阅读和Review,提供了10+个适用于各种不同场景的Demo、详细的文档说明和变更记录。普遍适用于算法调度、引擎开发、并发编程、抽象业务通用逻辑等场景。初学者可以通过此项目,学到新C++的一些实用功能、图调度方式、模块开发、模板编程、多线程编程、设计模式和一些通用算法知识。

  • 示例代码:


#include "../src/CGraph.h"
using namespace CGraph;

class MyNode1 : public GNode {
public:
    CStatus run () override {
        CStatus status;
        CGRAPH_ECHO("[%s], enter MyNode1 run function. Sleep for 1 second ... ", this->getName().c_str());
        CGRAPH_SLEEP_SECOND(1)
        return status;
    }
};

class MyNode2 : public GNode {
public:
    CStatus run () override {
        CStatus status;
        CGRAPH_ECHO("[%s], enter MyNode2 run function. Sleep for 2 second ... ", this->getName().c_str());
        CGRAPH_SLEEP_SECOND(2)
        return status;
    }
};

void tutorial_simple() {
    /* 创建一个流水线,用于设定和执行流图信息 */
    GPipelinePtr pipeline = GPipelineFactory::create();
    GElementPtr a, b, c, d = nullptr;

    /**
     * 以下几行代码,设定了一个[b/c]依赖[a],[d]依赖[b/c]的dag流图
     */
    pipeline->registerGElement<MyNode1>(&a, {}, "nodeA");
    pipeline->registerGElement<MyNode2>(&b, {a}, "nodeB");
    pipeline->registerGElement<MyNode1>(&c, {a}, "nodeC");
    pipeline->registerGElement<MyNode2>(&d, {b, c}, "nodeD");

    /* 执行流图框架 */
    pipeline->process();
    GPipelineFactory::remove(pipeline);
}
  • 截图:

image

ChunelFeng avatar Feb 11 '22 12:02 ChunelFeng

您好,我最近正在吃BUG中,无法及时回复您的邮件。我将在BUG吃完后,及时给您回复。

Haitai-92 avatar Feb 11 '22 12:02 Haitai-92

我已收到,我会尽快给您回复。

winray avatar Feb 11 '22 12:02 winray

这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。

CairLyq avatar Feb 11 '22 12:02 CairLyq

谢谢来信

hg612 avatar Feb 11 '22 12:02 hg612

您发给我的邮件已经收到,感谢您的支持!

ousiwwi avatar Feb 11 '22 12:02 ousiwwi

这。。。

ChunelFeng avatar Feb 11 '22 12:02 ChunelFeng