目录
一、普通函数值传递和引用传递
#include <iostream>
#include <thread>
#include <atomic>
// 普通函数值传递
void myFunc1(int i)
{
++i;
}
// 普通函数引用传递
void myFunc2(int& i)
{
++i;
}
int main()
{
int num1 = 0;
int num2 = 0;
std::thread t1(myFunc1, num1);
std::thread t2(myFunc2, std::ref(num2));
if(t1.joinable())
t1.join();
if (t2.joinable())
t2.join();
std::cout << num1 << std::endl;
std::cout << num2 << std::endl;
return 0;
}
二、类成员函数值传递和引用传递
#include <iostream>
#include <thread>
#include <atomic>
class A
{
public:
// 类非静态函数值传递
void myFunc1(int i)
{
++i;
}
// 类非静态函数引用传递
void myFunc2(int& i)
{
++i;
}
};
int main()
{
int num1 = 0;
int num2 = 0;
A a;
// 类非静态成员函数需要传this指针
std::thread t1(&A::myFunc1, &a, num1);
std::thread t2(&A::myFunc2, &a, std::ref(num2));
if(t1.joinable())
t1.join();
if (t2.joinable())
t2.join();
std::cout << num1 << std::endl;
std::cout << num2 << std::endl;
return 0;
}