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

#### 产品支持情况

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


#### 功能说明

申请通信线程，当前支持AI CPU+TS、HOST CPU+TS、CCU通信引擎。注意如果通信引擎是AI CPU+TS，需要额外下发一次kernel，AI CPU侧才能使用此通信线程。


#### 函数原型

```
HcommResult HcommThreadAlloc(CommEngine engine, uint32_t threadNum, uint32_t notifyNumPerThread, ThreadHandle* threads)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| engine | 输入 | 通信引擎类型。 CommEngine类型的定义可参见CommEngine。 |
| threadNum | 输入 | 通信线程数量，每次调用该接口申请的最大线程数量为1000。 |
| notifyNumPerThread | 输入 | 每个通信线程中的同步资源（Notify）数量，每个通信线程调用该接口每次申请的notify数量最大为64。 |
| threads | 输出 | 返回的通信线程句柄。需传入threadNum大小的ThreadHandle类型数组。 ThreadHandle类型的定义可参见ThreadHandle。 |


#### 返回值

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


#### 约束说明

调用此接口申请的thread，后续需要调用HcommThreadFree接口释放，调用HcommThreadAlloc接口申请AICPU_TS或CPU_TS等通信引擎的线程前，必须先在同一线程上调用aclrtSetdevice接口指定deviceId。


#### 调用示例

```
ThreadHandle thread[3];
//申请两条流，每条流Notify数量为3
HcommResult ret =  HcommThreadAlloc(COMM_ENGINE_AICPU_TS, 2, 3, thread);
```
