C++ 在另一个线程正在运行的情况下退出应用程序时出错

C++ 在另一个线程正在运行的情况下退出应用程序时出错,c++,multithreading,c++11,C++,Multithreading,C++11,我有这样一个代码: int main(){ thread loop2(loop2); while(running){ } } void loop2(){ while(something){ } } 当running变为false时,程序应退出。但是我从VS得到一个错误:-abort()已被调用。 我知道发生这种情况是因为第二个线程仍在运行。我试图用~thread()终止线程,但没有成功 你不能随意调用某个对象的析构函数 相反,您应该中断并加入线程

我有这样一个代码:

int main(){
    thread loop2(loop2);

    while(running){

    }
}

void loop2(){
    while(something){

    }
}
running
变为
false
时,程序应退出。但是我从VS得到一个错误:
-abort()已被调用。


我知道发生这种情况是因为第二个线程仍在运行。我试图用
~thread()
终止线程,但没有成功

你不能随意调用某个对象的析构函数

相反,您应该中断并加入线程。

替换

while(running){

}


它将等待线程终止。

此代码中的任何内容都不会将
running
设置为false。事实上,您的程序显示UB,因为您的线程从不进行I/O或自行终止。@LightnessRacesinOrbit将什么设置为false?我没有看到名为运行的
的声明。
loop2.join()