我正在使用 Visual Studio 2012 和 C++11。我不明白为什么这不起作用:
void client_loop(bool &run)
{
while ( run );
}
int main()
{
bool running = true;
std::thread t(&client_loop,std::ref(running));
running = false ;
t.join();
}
在这种情况下,线程循环t
永远不会结束,但我明确设置running
为false
. run
并且running
有相同的位置。我试图设置running
为单个全局变量,但没有任何反应。我也尝试传递一个指针值,但什么也没有。
线程使用相同的堆。我真的不明白。谁能帮我?