![](/img/trans.png)
[英]Is it safe to access a variable from the main thread after it was written to by another thread and after that thread was joined?
[英]Access variable in main thread from second thread
我有一个函数(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;
}
上面的代码仅是一个示例,用于阐明我的问题。
创建线程时,可以使用std::ref
通过引用传递变量,但是,您仍然需要将变量放在函数之外,否则它将超出范围。
std::thread t1(setAnimation, message, std::ref(myVariable));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.