课时3 线程启动、结束,建立线程多法,join、detach

用类做为可调用对象建立线程

class A
{
public:
    A() { cout << "构造函数" << endl; }
    A(const A& a) { cout << "拷贝构造函数" << endl; }

    void operator()() { cout << "此时在子线程中" << endl; }

    ~A() { cout << "析构函数" << endl; }
private:

};

int main(int argc, char** argv)
{
    A a;
    thread myjob(a);

    myjob.join();

    cout << "此时在主线程中" << endl;
    return 0;
}

用lambda做为可调用对象建立线程

int main(int argc, char** argv)
{
    auto f = [] {cout << "lambda" << endl; };
    thread myjob(f);
    //thread myjob([] {cout << "lambda" << endl; });这样的使用方法也能够经过编译

    myjob.join();

    cout << "此时在主线程中" << endl;
    return 0;
}
相关文章
相关标签/搜索