我正在尝试使用 Nao 的红球检测 API 做一些事情。我想一步一步做所有事情。我在回调的开头写了 callbackMutex every 。我在 if 语句的回调中取消订阅事件。
函数可以工作,但有时会出现“信息:达到线程限制”错误或取消订阅事件错误。
Nao 总是看到红球,但会创建很多线程(我认为)。我怎样才能只使用一个线程?
我用 C++ 编写。
我这样订阅:
memory.subscribeToEvent("redBallDetected", "moduleName", "fuctionName");
然后当 Nao 看到球时,调用这个函数。
void moduleName::functionName()
{
ALCriticalSection section(callbackMutex);
//create some proxies and declare some variables
try
{
//do movements
}
catch(const ALError& e) {
qiLogError("module.name") << e.what() << std::endl;
}
}
我使用 setWalkTargetVelocity 来行走机器人并检查 if 语句是否行走或停止。我没有使用任何东西来启动或停止线程。