C++ thread_id 是什么数据类型,它可以分配给变量吗?

C++ What datatype is a thread_id and can it assigned to a variable?

我很好奇线程是什么数据类型,它是否可以分配给变量并且 advisable/useful 这样做。

使用 #include <thread> 库。

一个 std::thread 是一个 class 代表一个单独的执行线程。

它本身不是操作系统线程。它只是代表它。

您可以创建线程类型的对象:

thread t1(foo);

你可以移动构造这样一个对象,你可以移动分配这样一个对象:

thread t2,t3;
t3=thread(foo);   // move assignement t3 start function foo() now
t2=move(t3);      // t2 takes over what t3 was representing 

但是你不能复制线程:

//t2=t3;          // not possible to copy threads; you have to move them 

线程的标识可以通过类型 thread::id type (implementation dependent type). However there's also a thread::native_handle_type returned by native_handle() 的值来完成,该类型的值可以(如果实现支持)return 可以用于 OS 特定功能的标识符

Online demo