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()