c++ thread以及createthread方法

 

示例:

复制代码
void test(int times)
{
    // 子线程睡眠times秒  this_thread是当前子线程
    this_thread::sleep_for(chrono::seconds(times));
    std::cout << "hellow thread1" << endl;
}


int main()
{ 
    // 设置一个子线程执行的函数test,并且test函数的参数是2
    // 在创建子线程之后就已经开始执行这个子线程了
    std::thread t(test, 2);

    // 代表主线程会阻塞,等待子线执行完成之后主线程才会继续执行
     t.join();

    // 代表设置此子线程为分离线程,即使主线程执行完成之后,
    // 即使主线程结束,子线程未执行也不会结束。当主线程结束时,由运行时库负责清理与子线程相关的资源。
    //t.detach();

    std::cout << "hellow main" << endl;
    return 0;
}
复制代码

  

结果:

hellow thread1
hellow main

注意:

 std::thread变量的声明周期结束时,会调用std::thread::~thread()析构函数,触发了内部的terminate()函数,从而导致进程闪退。因为创建std::thread对象后,如果没有调用对应的join()或者detach()函数,在其析构函数中就会触发terminate()函数,所以根据实际业务情况一定要使用join()或者detach()函数。

 

C++之——CreateThread

posted @   安静点--  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示