std ::线程不能在Linux的Eclipse

我不知道为什么,但包括c + + 11到我的项目在eclipse和新的function,如std :: array <>工作后,它突然不会工作,当我使用std ::线程。

这里是我试图运行的例子:

#include <iostream> #include <string> #include <thread> void print_message_function(const std::string& msg); int main() { std::string message1 = "Thread 1"; std::string message2 = "Thread 2"; std::thread thread1(print_message_function, message1); std::thread thread2(print_message_function, message2); thread1.join(); thread2.join(); } void print_message_function(const std::string& msg) { std::cout << msg << std::endl; } 

编译时没有错误,运行时没有错误(没有输出太..),但是当使用debugging工具时,它在这一行上崩溃:

 std::thread thread1(print_message_function, message1); 

这是崩溃时的堆栈:

 Thread [1] (Suspended: Signal 'SIGSEGV' received. Description: Segmentation fault.) 5 _dl_fixup() 0x0000003d6920df7c 4 _dl_runtime_resolve() 0x0000003d69214625 3 std::thread::_M_start_thread() 0x0000003d762b65a7 2 std::thread::thread<void (&)(std::string const&), std::string&>() /usr/include/c++/4.4.4/thread:133 0x0000000000402268 1 main() /.../Main.cpp:12 0x0000000000401e8d 

为什么发生这种情况?

您需要在编译命令中使用-pthread链接到pthreads库。