4

可能重复:
为什么这个简单的 std::thread 示例不起作用?

代码:

#include <iostream>
#include <thread>

void f()
{
  std::cout << "hi thread" << std::endl;
}

int main()
{
  std::thread t(f);
  std::cout << "hi" << std::endl;
  t.join();
}

问题:

$ g++ -o thread_test thread_test.cpp -std=c++0x
$ ./thread_test         
terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted
Abortado

“Abortado”在我的语言环境中意味着“中止”。

4

1 回答 1

9

您应该将其链接到pthread

g++ -o thread_test thread_test.cpp -std=c++0x -lpthread

libstdc++std::thread实现要求您将应用程序链接到libpthread,否则std::system_error当您尝试创建线程时它们会抛出 a 。

于 2012-11-19T19:21:49.397 回答