鲲鹏社区首页
中文
注册
开发者
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

kupl_sgraph_add_dep

为kupl静态图中的两个节点添加依赖关系。

接口定义

int kupl_sgraph_add_dep(kupl_sgraph_node_h precede, kupl_sgraph_node_h succeed);

参数

表1 参数定义

参数名

类型

描述

输入/输出

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的任务。