上一个博客https://blog.csdn.net/shaochuang1/article/details/100302439介绍了创建多线程的几种方法,但是都是没有参数的那种,这篇博客我们来向子线程中传入参数。
#include <iostream>
#include <thread>
using namespace std;
void Myprint(int i)
{
cout << i << endl;
}
int main()
{
int i = 1;
thread Mythread_1(Myprint, i);
Mythread_1.join();
std::cout << "Hello World!\n";
return 0;
}
thread Mythread_1(Myprint, i);可见,我们只需要在后面加入参数就行,有几个就添加几个。其他的几种构建多线程的方式也是一样的。
对于传参数的问题,必然就要面临传值,还是传引用。上面就是传值,从语法上来说是很简单,但是我们一般会考虑到效率的因素,这就需要进行传引用。
子线程的传引用是十分特别的。
#include <iostream>
#include <thread>
using namespace std;
void Myprint(const int& i)//int& i;这种写法在这种情况下,是错误的
{ //具体为什么我还不知道,弄清楚了再来更新
cout << "子线程中的i的地址" << &