在另一个运行的线程退出应用程序时出错

时间:2014-01-09 17:47:18

标签: c++ multithreading c++11

我有一个这样的代码:

int main(){
    thread loop2(loop2);

    while(running){

    }
}

void loop2(){
    while(something){

    }
}

running变为false时,程序应退出。但是我收到VS的错误:-abort() has been called.

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

2 个答案:

答案 0 :(得分:1)

替换

while(running){

}

通过

loop2.join()

它会等到线程终止。

答案 1 :(得分:0)

你不只是随意调用某个对象的析构函数!

相反,你应该中断,然后加入线程。