---
title: HcommChannelDestroy
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/commopdev/hcclopdevapi_07_0075.html
sourcePath: /source/zh/canncommercial/900/programug/commopdev/hcclopdevapi_07_0075.html
indexId: f755e8077f2ffc7e405b736974535c9aece94c874e5931150903d5f409b4c65d75
---
# HcommChannelDestroy

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | ☓ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | ☓ |
| Atlas 200I/500 A2 推理产品 | ☓ |
| Atlas 推理系列产品 | ☓ |
| Atlas 训练系列产品 | ☓ |


#### 功能说明

该接口为销毁通信通道的资源管理接口，释放由HcommChannelCreate创建的通信通道及其占用的所有系统资源，包括网络连接、同步信号、通信队列等。

该接口支持批量销毁，可在单次调用中释放多个通道，提高资源释放效率。


#### 函数原型

```
HcommResult HcommChannelDestroy(const ChannelHandle *channels, uint32_t channelNum);
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| channels | 输入 | 待销毁的通道句柄数组，每个元素标识一个已创建的通信通道。 ChannelHandle类型的定义请参见ChannelHandle。 该参数不能为空指针，数组中每个通道句柄必须是通过HcommChannelCreate创建的有效句柄（未销毁的句柄）。 |
| channelNum | 输入 | 待销毁的通道数量。 单位为“个”，取值范围：[1, 1048576]。 该参数必须大于 0，且等于channels数组中有效句柄的数量。 |


#### 返回值

HcommResult：接口成功返回0，其他失败。


#### 约束说明

- channels数组长度需要与channelNum参数一致。
- 对于通过不同引擎创建的通道，可批量销毁。
- 该销毁操作是原子性的，要么全部成功，要么在遇到第一个无效句柄时返回错误。


#### 调用示例

```
EndpointHandle endpointHandle = nullptr;
 // ... 创建端点的代码（省略）

 // 创建多个通道
 const uint32_t CHANNEL_NUM = 4;
 HcommChannelDesc channelDescs[CHANNEL_NUM] = {0};
 ChannelHandle channels[CHANNEL_NUM] = {0};

 // 准备通道描述符并创建通道
 for (uint32_t i = 0; i < CHANNEL_NUM; i++) {
     // ... 填充 channelDescs[i]
 }

 HcommResult ret = HcommChannelCreate(endpointHandle, COMM_ENGINE_CPU,
                                      channelDescs, CHANNEL_NUM, channels);
 if (ret != 0) {
     printf("Failed to create channels, ret = %d\n", ret);
     HcommEndpointDestroy(endpointHandle);
     return ret;
 }

 printf("%u channels created successfully\n", CHANNEL_NUM);

 // 使用通道进行通信
 // ...

 // 批量销毁所有通道
 ret = HcommChannelDestroy(channels, CHANNEL_NUM);
 if (ret != 0) {
     printf("Failed to destroy channels, ret = %d\n", ret);
 } else {
     printf("All channels destroyed successfully\n");
 }

 // 销毁端点
 HcommEndpointDestroy(endpointHandle);
```
