HcommChannelGetStatus
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
√ |
☓ |
|
☓ |
|
☓ |
|
☓ |
|
☓ |
功能说明
该接口用于查询通信通道的状态,支持批量查询多个通道的连接状态,用于在通道创建后、通信操作前确认通道是否已就绪。
该接口采用轮询机制,调用方需要持续调用直到所有通道都返回READY状态。
该接口主要用于通道连接建立阶段的同步等待。
函数原型
1 | HcclResult HcommChannelGetStatus(const ChannelHandle *channelList, uint32_t listNum, int32_t *statusList); |
参数说明
参数名 |
输入/输出 |
说明 |
|---|---|---|
channelList |
输入 |
待查询状态的通道句柄数组,每个元素标识一个已创建的通信通道。 ChannelHandle类型的定义请参见ChannelHandle。。 该参数不能为空指针,数组中每个通道句柄必须是通过HcommChannelCreate创建的有效句柄。 |
listNum |
输入 |
待查询的通道数量。 单位为“个”,取值范围:[1, 1048576]。 该参数必须大于 0。 |
statusList |
输出 |
通道状态数组,用于返回每个通道的当前状态,与channelList一一对应。 该参数不能为空指针。 调用者分配的数组,至少包含listNum个元素的空间。 |
返回值
HcclResult:接口成功返回HCCL_SUCCESS,其他失败。
约束说明
- channelList数组长度需要与listNum 参数一致。
- statusList[i]与channelList[i]一一对应,表示第i个通道的状态。
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | uint32_t channelNum = 50; std::vector<ChannelHandle> channels(channelNum); // 参考 HcommChannelCreate 进行 Channel 创建 ... uint32_t timeOut = 0; while (timeOut < 1000) { CHK_RET(HcommChannelGetStatus(channels, channelNum, statuses)); result = 0; for (int i = 0; i < channelNum; i++) { result |= statuses[i]; } if (result == 0) {break;} timeOut += 10; } // 通道就绪,执行通信操作 // ... |
父主题: 基础资源管理