【发布时间】:2019-04-29 09:44:19
【问题描述】:
如何阻止程序执行直到回调函数完成执行?
从我的 main() 我启动 interface.getImage();想要从我们的数据库中获取图像的函数。当我们接收到图像时,回调函数 void InterfaceColliseo::dataReceived (std::shared_ptr data) 开始执行。 但是我有一个问题,我的程序 main() 在我的回调函数执行之前终止了?
main.cpp
int main(){
InterfaceColliseo interface;
IMAGE = true;
interface.getImage();
// want to block program here
return 0;
}
回调函数
void InterfaceColliseo::dataReceived (std::shared_ptr<IData> data)
{
if (!data->isValid())
return;
const unsigned char* twoDImageData = data->get2DImageData();
int width2DImageData = data->getWidth2DImageData();
int height2DImageData = data->getHeight2DImageData();
const unsigned char* disparityData = data->getDisparityData();
int widthDisparityData = data->getWidthDisparityData();
int heightDisparityData = data->getHeightDisparityData();
if(IMAGE) {
saveImage(twoDImageData, width2DImageData, height2DImageData,
disparityData, widthDisparityData, heightDisparityData);
IMAGE = false;
}
if(ACQUISATION){
QList<GstObservationBasic> detectorData = data->getObstaclesData();
getObstacles(detectorData);
}
}
【问题讨论】: