Skip to content

Commit f279714

Browse files
committed
[tutorial] add trim tutorial
1 parent a14f68f commit f279714

6 files changed

Lines changed: 49 additions & 2 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,9 @@ int main() {
340340
* 优化`event`(事件)机制,异步事件可以等待结束
341341
* 发布 [CGraph-lite](https://github.com/ChunelFeng/CGraph-lite) 项目,提供简单DAG构图和参数传递功能。接口完全兼容,可无缝切换至本项目
342342

343+
[2024.09.28 - v2.6.2 - Chunel]
344+
* 更新`tutorial`内容
345+
343346
</details>
344347

345348
------------

tutorial/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ CGRAPH_TUTORIAL_LIST = [
3939
"T24-Fence",
4040
"T25-Coordinator",
4141
"T26-Mutable",
42+
"T27-Trim",
4243
]
4344

4445
[

tutorial/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ set(CGRAPH_TUTORIAL_LIST
2828
T24-Fence
2929
T25-Coordinator
3030
T26-Mutable
31+
T27-Trim
3132
)
3233

3334

tutorial/T26-Mutable.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
@Contact: chunel@foxmail.com
44
@File: T26-Mutable.cpp
55
@Time: 2023/11/15 21:18
6-
@Desc:
6+
@Desc: 本例主要演示,通过 GMutable 在pipeline执行的过程中,修改 GMutable 中的依赖关系逻辑
77
***************************/
88

99
#include "MyGMutable/MyMutable.h"

tutorial/T27-Trim.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/***************************
2+
@Author: Chunel
3+
@Contact: chunel@foxmail.com
4+
@File: T27-Trim.cpp
5+
@Time: 2024/9/28 21:43
6+
@Desc: 本例主要演示,通过 Trim() 方法,修剪pipeline中的冗余依赖逻辑
7+
***************************/
8+
9+
#include "MyGNode/MyNode1.h"
10+
#include "MyGNode/MyNode2.h"
11+
12+
using namespace CGraph;
13+
14+
void tutorial_trim() {
15+
GPipelinePtr pipeline = GPipelineFactory::create();
16+
GElementPtr a, b, c, d = nullptr;
17+
18+
pipeline->registerGElement<MyNode1>(&a, {}, "nodeA");
19+
pipeline->registerGElement<MyNode2>(&b, {a}, "nodeB");
20+
pipeline->registerGElement<MyNode1>(&c, {a}, "nodeC");
21+
22+
/**
23+
* 可以看出,d节点 对a 的依赖,是可有可无的
24+
* 建议通过 trim() 接口删除冗余依赖
25+
* 参考文档:http://www.chunel.cn/archives/cgraph-remove-redundancy-link
26+
*/
27+
pipeline->registerGElement<MyNode2>(&d, {a, b, c}, "nodeD");
28+
29+
auto trimSize = pipeline->trim();
30+
CGRAPH_ECHO("trim size is: %u", trimSize);
31+
32+
// 查看 trim后的效果
33+
pipeline->dump();
34+
GPipelineFactory::remove(pipeline);
35+
}
36+
37+
38+
int main() {
39+
tutorial_trim();
40+
return 0;
41+
}

xmake.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ tutorial_list = {
4242
"T23-Some",
4343
"T24-Fence",
4444
"T25-Coordinator",
45-
"T26-Mutable"
45+
"T26-Mutable",
46+
"T27-Trim",
4647
}
4748

4849
-- add tutorial target one by one

0 commit comments

Comments
 (0)