I tried to test an example of C++11 threads in Eclipse. But I got this message when running the program:
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted'
My system: ubuntu + gcc 4.7
Program:
#include <iostream>
#include <thread>
void worker()
{
std::cout << "hello from worker" << std::endl;
}
int main(int argc, char **argv)
{
std::thread t(worker);
t.join();
}
...and yes, I put -std=c++11
and -pthread
inside C/C++ Build -> Settings -> Tool Settings -> Cross G++ Compiler -> Miscellaneous -> Other Flags
.
Any comments?
The problem was solved by the comment of Jonathan Wakely.
I added -pthread
to C/C++ Build -> Settings -> Tool Settings -> Cross G++ **Linker** -> Miscellaneous -> Other Flags
and the program worked correctly.
Thank you Jonathan.
To work C++11 std::thread
in Eclipse, one needs to give -pthread
option while compiling. However that's not enough. In my Ubuntu 14.04, with Eclipse Kepler and g++4.9 below makes it work:
-pthread
after -std=c++11
pthread
(which is equivalent
to command line -lpthread
)Finally re-compile the project; the error should go.
Also remember that if you use, std::thread
then its object must be join()
somewhere. Else you may get below runtime error:
terminate called without an active exception
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