美文网首页
C++ std::thread 两种调用方法 join() d

C++ std::thread 两种调用方法 join() d

作者: XBruce | 来源:发表于2021-05-07 11:05 被阅读0次
#include <iostream>
#include <thread>

void function_1() {
    std::this_thread::sleep_for(std::chrono::milliseconds(500)); 
    std::cout << "I'm function_1()" << std::endl;
}

void test_detach() {
    std::thread t1(function_1);
    t1.detach();
    std::cout << "test_detach() finished" << std::endl;
}
void test_join() {
    std::thread t1(function_1);
    t1.join();  //Block until function exec finished.
    std::cout << "test_join() finished" << std::endl;
}

int main() {
    test_detach();
    //test_join();
    //让主线程晚于子线程结束
    std::this_thread::sleep_for(std::chrono::milliseconds(1000)); //延时1s
    return 0;
}

// 执行结果:
// 使用test_detach时
// test_detach() finished
// I'm function_1()

// 使用 test_join()时
// I'm function_1()
// test_join() finished

当使用detach()时,如果去掉main函数中的1s延时,会发现function_1的信息没有打印,因为主线程执行的太快,整个程序已经结束了,那个后台线程被C++运行时库回收了。

相关文章

网友评论

      本文标题:C++ std::thread 两种调用方法 join() d

      本文链接:https://www.haomeiwen.com/subject/ycssdltx.html