課時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;
}
相關文章
相關標籤/搜索