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

#### 产品支持情况

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


针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，仅支持Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框。


#### 功能说明

根据传入的commId获取对应通信域，并对该通信域加锁，防止该通信域被重复获取。


#### 函数原型

```
int32_t HcommAcquireComm(const char* commId)
```


#### 参数说明

| 参数名 | 输入/输出 | 描述 |
| --- | --- | --- |
| commId | 输入 | 通信域ID。 |


#### 返回值

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


#### 约束说明

1. 仅支持AI CPU模式下，在Device侧调用该接口。
2. HcommAcquireComm和HcommReleaseComm分别对应加锁和解锁动作，必须成对调用。接口内部会拦截重复加锁场景，避免同一个通信域被多个线程同时占用。


#### 调用示例

该函数需编译到Device侧使用：

```
// 在AI CPU上执行的Kernel函数
extern "C" unsigned int HcclAicpuKernel(const char* commId)
{
// 对通信域加锁，防止该通信域被并发使用
if (HcommAcquireComm(commId) != HCCL_SUCCESS) {
return 1;
}
// 执行任务编排
// ...
// 释放通信域
if (HcommReleaseComm(commId) != HCCL_SUCCESS) {
return 1;
}
return 0;
}
```
