给定一个使用 C++11 线程特性的简单程序:
#include <iostream>
#include <thread>
using namespace std;
void dont_thread_on_me() {
cout << "action from another thread" << endl;
}
int main() {
thread t { dont_thread_on_me };
t.detach();
cin.get();
}
如果我使用以下方法构建应用程序:
c++ -std=c++11 Program.cpp -o Program.out
该程序构建良好,但是当我运行它时,我得到:
./Program.out
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Aborted
如果我用-pthread
如下方式构建它:
c++ -std=c++11 Program.cpp -o Program.out -pthread
该程序执行良好。我还没有看到任何其他需要特殊构建标志的 C++11 功能,为什么会有这个?