---
title: 共享队列管理使用说明
description: "本章提供的接口用于实现Device侧的数据队列和数据转发功能。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclcppdevg_03_1309.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_1309.html
indexId: a8d35d8922067dd59b306d9b87510d1f9ca5197dc712a9ec0f0e62b31f66a61068
---
# 共享队列管理使用说明

#### 功能说明

本章提供的接口用于实现Device侧的数据队列和数据转发功能。

队列只允许单个消费者或单个生产者操作，Enqueue（指向队列中添加数据）或Dequeue（指从队列中获取数据）时应单线程操作，不支持并发。


#### 典型使用场景举例

调用队列管理接口、队列方式模型加载接口（指aclmdlLoadFromFileWithQ(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0287.html)或aclmdlLoadFromMemWithQ(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0288.html)接口），可实现以数据驱动的模型推理功能，该场景下的关键接口调用流程如下：

1. 调用多次acltdtCreateQueue接口，申请存放模型输入、输出数据的队列，一个输入对应一个输入队列ID，一个输出对应一个输出队列ID。
2. 调用队列方式模型加载接口（指aclmdlLoadFromFileWithQ(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0287.html)或aclmdlLoadFromMemWithQ(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0288.html)接口），传入模型、输入队列ID、输出队列ID等。
3. 用户申请存放输入、输出数据的内存。
4. 向内存中读入模型推理的输入数据，并调用acltdtEnqueueData接口将每个输入的数据入队。
  此时，接口内部会根据入队的输入数据自行触发模型推理，推理结束后，结果数据会自行存放到输出队列中。

5. 调用acltdtDequeueData出队接口，获取每个输出的数据，以便进一步后处理。
6. 获取推理结果数据后，需及时清理资源，包括释放输入&输出内存、调用aclmdlUnload(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0291.html)接口卸载模型、调用acltdtDestroyQueue接口销毁队列等。
