我的程序如下所示
#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)
有人可以帮助我解决我的错误吗?
答案 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