我有一个函数(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;
}
以上代码只是澄清我的问题的一个例子。
答案 0 :(得分:1)
创建线程时,可以使用std::ref
通过引用传递变量但是,您仍然需要在函数外部使用变量,否则它将超出范围。
std::thread t1(setAnimation, message, std::ref(myVariable));