イベントからループを開始し、別のイベントからループを停止する必要があります。私の考えは、ボタンを押したときに関数 startDequeuing() を呼び出してループを開始し、関数 stopDequeuing() から "dequeuing" 変数を 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();
}
}