要能够区分线程,那么每个线程必须得有一个唯一的标识符才行了。C++11 thread中给我们提供了获取线程唯一标识符的方法。线程id可用于比较判断到底是不是同一个线程,作为关联容器的key值等等,并且可以用cout进行输出,不必在乎它们是什么类型。
请看下面的代码:
#include <iostream>
#include <thread>
void f1()
{
}
void f2()
{
}
int main()
{
std::thread::id id_1;
std::thread::id id_2;
std::thread::id id_3;
// 获取当前线程的id标识
std::thread::id id_0 = std::this_thread::get_id();
std::thread t1(f1);
std::thread t2(f2);
id_1 = t1.get_id();
id_2 = t2.get_id();
std::cout << "id_0 = " << id_0 << std::endl;
std::cout << "id_1 = " << id_1 << std::endl;
std::cout << "id_2 = " << id_2 << std::endl;
std::cout << "id_3 = " << id_3 << std::endl;
t1.join();
t2.join();
return 0;
}