1.3 花式创建线程

本文介绍了C++中启动线程的不同方式,强调了使用仿函数对象创建线程时应注意函数对象会被复制到新线程空间。同时,讨论了如何向线程过程函数传递参数,以及值传递和引用传递的区别,特别是当涉及到指针和线程分离时可能出现的问题。
摘要由CSDN通过智能技术生成


启动线程需要注意的问题

在上一节,我们已经学会了最简单的线程初始化,用的是一个无参的函数来创建线程的。
在这里插入图片描述
那么,我们还有别的线程启动方式吗?有的。

下面举一个仿函数对象初始化线程的例子。

我们知道,在C++中,有一个东西叫做仿函数,它本质上是一个类,只是重载了函数调用运算符。是可以用它的对象来初始化线程的
在这里插入图片描述
在这种情况下,有两个需要注意的地方:

  • A:提供的函数对象会复制到新线程的空间当中,
  • B:如果你不想创建对象,使用了匿名对象Fun() 去构造线程,那么这个时候C++编译器会将其视为函数声明。解决的办法如下:
    在这里插入图片描述

向线程过程函数传递参数

若想向其传递参数,则将这些参数作为 std::thread 构造函数的附加参数即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值