1.2 第一个并发程序


从 hello world 开始

我们开始学一门语言,都是从 hello world 开始的。
在这里插入图片描述
这,是只有一个主线程的程序。


第一个并发程序

使用线程库,需要包含头文件,在该头文件中包含了管理线程的函数和类。

  • #include <thread>

我们知道,每个线程都有对应的线程过程函数,所以需要用一个线程过程函数来初始化线程。
在这里插入图片描述
这样,就将原来的线程数变为了2,分别是主线程 main(),以及子线程 printHello()


join()

在上面的程序中,线程对象 t1 调用了 join() 方法,这样主线程就会等待线程 t1 运行结束以后再运行。否则,很有可能在创建线程 t1 时,主线程已经执行结束了,这样你的程序就看不到 hello world 了。


detach()

假如主线程不想等 t1 线程执行完毕,那么可以使用 detach 方法。这个时候,大概率主线程是在线程 t1 执行前结束的,看不到 hello world。
在这里插入图片描述
值得注意,一个线程一旦被 detach 以后,就不能再 join 了。编译虽然可以通过,但执行时将出现
在这里插入图片描述

改进:在 join 之前,可以使用 joinable() 方法进行判断
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值