我有一个这样的代码:
int main(){
thread loop2(loop2);
while(running){
}
}
void loop2(){
while(something){
}
}
当running
变为false
时,程序应退出。但是我收到VS的错误:-abort() has been called.
我知道发生这种情况是因为第二个线程仍在运行。我试图用~thread()
终止线程,但它没有用。
答案 0 :(得分:1)
替换
while(running){
}
通过
loop2.join()
它会等到线程终止。
答案 1 :(得分:0)
你不只是随意调用某个对象的析构函数!
相反,你应该中断,然后加入线程。