---
title: kupl_sgraph_add_dep
description: "为kupl静态图中的两个节点添加依赖关系，从而描述任务之间的执行先后顺序。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_046.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_046.html
indexId: 1f0c571745e0a3bfc274f9fcad4f34048018580378f77b0b63957ffe782d2fa267
---
# 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


#### 示例

```
#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(nullptr);

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