引擎心跳驱动接口。阻塞当前线程并泵送异步计算任务。它是连接“任务提交”与“结果回调”的唯一桥梁。
int LiteRtLm_WaitUntilDone(void* engine_ptr, int timeout_sec);
| 参数/返回值 | 详细描述 |
|---|---|
engine_ptr |
要驱动的引擎实例句柄。 |
timeout_sec |
单次阻塞的超时时间。设为 0 表示使用默认超时(通常为 600 秒)。 |
返回值 (int) |
状态码: 0: 推理任务已全部正常完成。 1: 单次阻塞超时,但任务仍在进行中。 -1: 引擎发生内部致命错误。 |
// 在一个独立的后台 Thread 中运行
void UMyAiSubsystem::InferenceWorker() {
while (bIsRunning) {
// 阻塞并等待 Token 产生
int Result = LiteRtLm_WaitUntilDone(EngineHandle, 1);
if (Result == 0) {
// 所有任务完成,进入休眠以节省 CPU
FPlatformProcess::Sleep(0.1f);
} else if (Result < 0) {
UE_LOG(LogTemp, Error, TEXT("Engine Heartbeat Lost!"));
break;
}
// Result == 1 表示仍在产生中,继续下一次循环
}
}