1. 创建线程,并获取当前的线程id
#include <iostream>
#include <thread>
void func()
{
std::cout << "hello ,this is my thread, thread id is " << std::this_thread::get_id() << std::endl;
}
int main()
{
std::thread th = std::thread(func);
th.join();
std::cout << "main thread id is " << std::this_thread::get_id() << std::endl;
std::cout << "Hello World!\n";
}
运行结果:
2. 线程传值、传引用
#include <iostream>
#include <thread>
void add(int a, int b, int &c)
{
c = a + b;
std::cout << "fun add thread id is " << std::this_thread::get_id() << std::endl;
std::cout << "&c : " << &c << " c: " << c << std::endl;
}
int main()
{
int a = 1;
int b = 2;
int c;
std::thread th = std::thread(add, a, b, std::ref(c));
th.join();
std::cout << "&c : " << &c << " c: " << c << std::endl;
std::cout << "main thread id is " << std::this_thread::get_id() << std::endl;
}
执行结果:
去掉代码中的std::ref()
std::thread th = std::thread(add, a, b, c);
运行平台为:
编译结果