My programs looks like below
#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;
}
When I compile it using the following command I get no errors
g++-4.7 -std=c++11 main.cpp
But when I run it I get the following error
In Main terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted (core dumped)
Could someone help me with where I am going wrong?
When I use C++11 threads with GCC, i use:
g++ -std=c++0x -pthread -g main.cpp
That works for me.
When compiling your code with g++
, use the -pthread
option.
Below is the answer I find from stackoverflow: In g++ is C++ 11 thread model using pthreads in the background?
Everybody already answered that you need the -pthread argument passed to the compiler. Almost for sure it won't change in 4.8 but according to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52681 the exception will at least have a nice message stating what's wrong.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With