Метод get_id
Метод get_id класса thread возвращает
идентификатор потока в виде объекта типа
std::thread::id. Этот идентификатор уникален
для каждого активного потока выполнения и может
использоваться для сравнения потоков, хранения
в контейнерах или вывода в поток. Если объект
thread не связан ни с каким потоком
выполнения, метод возвращает сконструированный
по умолчанию объект id, который не
равен идентификатору ни одного активного потока.
Метод не принимает параметров и не изменяет
состояние объекта.
Синтаксис
thread::id get_id() const noexcept;
Пример
Давайте создадим поток и выведем его идентификатор, а также идентификатор главного потока:
#include <iostream>
#include <thread>
using namespace std;
int main()
{
thread t([]{
cout << "thread id: " << t.get_id() << endl;
});
cout << "main id: " << this_thread::get_id() << endl;
t.join();
return 0;
}
Результат выполнения кода:
"main id: 140234567890"
"thread id: 140234555678"
Пример
Давайте проверим, что идентификаторы двух разных потоков не равны, а идентификатор одного и того же потока совпадает:
#include <iostream>
#include <thread>
using namespace std;
int main()
{
thread t1([]{});
thread t2([]{});
cout << boolalpha;
cout << (t1.get_id() == t1.get_id()) << endl;
cout << (t1.get_id() == t2.get_id()) << endl;
t1.join();
t2.join();
return 0;
}
Результат выполнения кода:
true
false