【笔记】c++ std::thread 简单使用方法以及join与detach函数的区别

本文介绍了C++中线程控制的两种方式:join和detach。join使得主线程等待线程执行完毕后再继续,而detach则允许主线程与创建的线程独立运行。通过示例代码展示了detach的使用,当使用join时,外部变量如&_irun的更新可能会受到影响,导致线程无法正常结束。理解这两种方法对于多线程编程至关重要。
摘要由CSDN通过智能技术生成

join:主线程阻塞,一直等到线程执行结束后,主线程才继续向下进行。

detach:主线程继续进行,同时线程也会开始进行,主线程与创建的线程互不影响。

#define THREAD_SIZE 4 //线程数组的大小
#include <iostream>
#include <thread>
#include <chrono> //包含线程休眠函数sleep_for
using namespace std;
int _irun = 0; //控制线程循环的变量

void run(string name)
{
    while (!_irun)
    {
        cout << "thread:" << name << "running" << endl;
        //线程休眠一秒
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
}

int main()
{
    //线程数组
    thread thd;
    string thread_name;
    cin>>thread_name;
    //将函数绑定到线程,并传参
    thd = thread(run, thread_name);
    //线程开始执行
    thd.detach();
    //thd.join();
    cin >> _irun;

    system("pause");
    return 0;
}

如果使用join开始线程,_irun 将无法得到新的赋值,线程将无法结束

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值