我有一個函數(messageArrived),調用的是一個函數(setAnimation)在一個新的線程內。我如何訪問在messageArrived函數內定義的布爾值並在第二個線程中訪問它?主線程從第二個線程訪問變量
如果有新消息我想終止第二個線程(setAnimation)。我認爲,布爾是唯一的方法來「終止」一個線程。
#include <thread>
bool start = false;
void setAnimation(std::string msg){
start = true;
while(start){
//do something
}
return;
}
int messageArrived(std::string message){
start = false;
std::thread t1(setAnimation, message);
t1.detach();
return 1;
}
上面的代碼只是一個例子來澄清我的問題。
與任何其他函數一樣,您需要通過指針/引用傳遞函數。 – NathanOliver
局部變量侷限於它們在其中定義的範圍。線程不會更改它。 –
對此沒有什麼意義,因爲'messageArrived'返回時'start'不再存在,所以沒有什麼可以訪問的。 – molbdnilo