代码块和gcc中的STD线程

时间:2013-06-29 08:21:38

标签: c++ multithreading c++11

以下代码我在启用了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;
    }

但是如何在代码块中执行此操作?我在代码块中找不到编译器选项中的开关。

0 个答案:

没有答案