kupl_sgraph_add_dep
为kupl静态图中的两个节点添加依赖关系。
接口定义
int kupl_sgraph_add_dep(kupl_sgraph_node_h precede, kupl_sgraph_node_h succeed);
参数
参数名 |
类型 |
描述 |
输入/输出 |
|---|---|---|---|
precede |
kupl_sgraph_node_h |
添加依赖关系的前继节点 |
输入 |
succeed |
kupl_sgraph_node_h |
添加依赖关系的后继节点 |
输入 |
返回值
成功:返回KUPL_OK
失败:返回KUPL_ERROR
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <stdio.h> #include "kupl.h" void func1(void *args) { printf("gnode1 task finished\n"); } void func2(void *args) { printf("gnode2 task finished\n"); } int main() { kupl_graph_h graph = kupl_graph_create(NULL); kupl_sgraph_h sgraph = kupl_sgraph_create(); kupl_sgraph_node_desc_t node1_desc = { .func = func1, .args = NULL, }; kupl_sgraph_node_h node1 = kupl_sgraph_add_node(sgraph, &node1_desc); kupl_sgraph_node_desc_t node2_desc = { .func = func2, .args = NULL, }; kupl_sgraph_node_h node2 = kupl_sgraph_add_node(sgraph, &node2_desc); kupl_sgraph_add_dep(node1, node2); kupl_sgraph_task_desc_t subgraph_task_desc = { .sgraph = sgraph, }; kupl_task_info_t info = { .type = KUPL_TASK_TYPE_SGRAPH, .desc = &subgraph_task_desc, }; kupl_graph_submit(graph, &info); kupl_graph_wait(graph); kupl_graph_destroy(graph); kupl_sgraph_destroy(sgraph); return 0; } |
运行结果如下。
gnode1 task finished gnode2 task finished
上述示例演示了在静态图中添加node1、node2两个节点,并且为node1、node2两个节点添加依赖关系,最终通过提交静态图执行的流程。上述kupl_sgraph_add_dep函数添加了node1到node2的依赖关系,即node1为前继节点、node2为后继节点;根据运行结果得以验证函数功能,node1的任务先执行完毕,再执行node2的任务。
父主题: 计算图编程函数