C ++ 11 std :: thread segment fault

时间:2014-09-18 08:13:18

标签: multithreading c++11

该程序以段故障结束。为什么?

#include <thread>

void f(){}

int main(){

    while(true){
        std::thread t(f);
        t.join();
    }
}

环境:winxp + mingw + gcc4.8

1 个答案:

答案 0 :(得分:1)

程序不应该导致任何资源问题,因为在每个循环结束时,线程完成执行并且线程对象被破坏。

我在使用VS 2013 Update 3编译的Win 7 64位上运行了稍微修改过的代码。当我输入此答案时,计数器达到了超过880,000而没有任何错误。因此,问题可能出在您的环境中。

#include <thread>
#include <iostream>

void f(){}

int main(){
    int i = 0;
    while (true){
        std::thread t(f);
        t.join();
        std::cout << ++i << std::endl;
    }
}