我需要从一个事件开始一个循环,然后从另一个事件中停止它。我的想法是当我按下按钮时调用函数 startDequeuing(),以便启动具有循环的线程,然后终止该循环,将函数 stopDequeuing() 中的“出队”变量设置为 false。
这是我第一次使用线程,当我启动循环时程序会锁定,我认为是因为变量“出队”被锁定并且无法从线程外部访问,对吗?
我怎么解决这个问题??
这里有一些代码:
void CameraManager::startDequeuing(){
dequeuing = true;
std::thread dequeueThread(&CameraManager::dequeueLoop, this);
dequeueThread.join();
}
void CameraManager::stopDequeuing(){
dequeuing = false;
}
void *CameraManager::dequeueLoop(){
while(dequeuing){
highSpeedCamera->dequeue();
highSpeedCamera->enqueue();
}
}