以下代码我在启用了c ++ 11的代码块中尝试。它构建但运行时失败
#include <iostream>
#include <thread>
using namespace std;
void PrintFromThread(void)
{
cout <<"I am from thread"<<endl;
}
int main()
{
cout << "Hello world!" << endl;
thread MyThread (PrintFromThread);
MyThread.join();
return 0;
}
在主线程的第一个“hello world”之后,它说“在抛出std :: system_error的实例后终止调用 什么操作不允许 中止“。
我通过此开关尝试从命令行进行相同的代码编译“g ++ -std = c ++ 0x -lpthread”但结果是相同的。 可能有什么不对? 感谢
// ------------------------------------- 在第一次评论后编辑
有效!
我改变了这样的代码,按照我的预期工作
#include <iostream>
#include <thread>
using namespace std;
int PrintFromThread(void)
{
cout <<"I am from thread"<<endl;
return 0;
}
int main()
{
cout << "Hello world!" << endl;
thread MyThread (PrintFromThread);
MyThread.join();
cout<<"exiting"<<endl;
return 0;
}
但是如何在代码块中执行此操作?我在代码块中找不到编译器选项中的开关。