启动线程需要注意的问题
在上一节,我们已经学会了最简单的线程初始化,用的是一个无参的函数来创建线程的。
那么,我们还有别的线程启动方式吗?有的。
下面举一个仿函数对象初始化线程的例子。
我们知道,在C++中,有一个东西叫做仿函数,它本质上是一个类,只是重载了函数调用运算符。是可以用它的对象来初始化线程的
在这种情况下,有两个需要注意的地方:
- A:提供的函数对象会复制到新线程的空间当中,
- B:如果你不想创建对象,使用了匿名对象Fun() 去构造线程,那么这个时候C++编译器会将其视为函数声明。解决的办法如下:
向线程过程函数传递参数
若想向其传递参数,则将这些参数作为 std::thread 构造函数的附加参数即可。