C ++ 11线程无效

时间:2012-11-05 07:08:27

标签: c++ multithreading gcc c++11

我的程序如下所示

#include <iostream>
#include <thread>
#include <exception>

void hello()
{
    std::cout << "Hello world!!!!" << std::endl;
}

int main()
{
    std::cout << "In Main\n";
    std::thread t(hello);
    t.join();
    return 0;
}

当我使用以下命令编译它时,我没有错误

g++-4.7 -std=c++11 main.cpp

但是当我运行它时,我收到以下错误

In Main
terminate called after throwing an instance of 'std::system_error'
what():  Operation not permitted
Aborted (core dumped)

有人可以帮助我解决我的错误吗?

5 个答案:

答案 0 :(得分:10)

当我使用GCC的C ++ 11线程时,我使用:

g++ -std=c++0x -pthread -g main.cpp

这适合我。

答案 1 :(得分:6)

使用g++编译代码时,请使用-pthread选项。

以下是我从stackoverflow找到的答案: In g++ is C++ 11 thread model using pthreads in the background?

答案 2 :(得分:3)

每个人都回答说你需要传递给编译器的-pthread参数。几乎可以肯定它不会在4.8中发生变化,但根据http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52681,异常至少会有一个很好的信息,说明什么是错的。

答案 3 :(得分:0)

您可能需要链接到pthread库

答案 4 :(得分:0)

你可以试试,

g++ --std=c++11 -lpthread main.cpp