从第二个线程访问主线程中的变量

时间:2017-03-29 13:54:50

标签: c++ multithreading c++11 boolean thread-safety

我有一个函数(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;
}

以上代码只是澄清我的问题的一个例子。

1 个答案:

答案 0 :(得分:1)

创建线程时,可以使用std::ref通过引用传递变量但是,您仍然需要在函数外部使用变量,否则它将超出范围。

std::thread t1(setAnimation, message, std::ref(myVariable));