std::thread::id 转线程ID
时间: 2023-07-02 13:04:57 浏览: 164
在 C++11 中,可以使用 `std::this_thread::get_id()` 获取当前线程的 `std::thread::id`。如果要将 `std::thread::id` 转换成线程 ID,可以使用 `std::thread::id::native_handle()` 函数来获取本地句柄,然后再将其转换为线程 ID。例如:
```c++
#include <iostream>
#include <thread>
int main() {
std::thread::id id = std::this_thread::get_id();
std::cout << "Thread ID: " << id << std::endl;
// 将 std::thread::id 转换成线程 ID
std::thread::native_handle_type handle = id.native_handle();
std::cout << "Native handle: " << handle << std::endl;
// 注意:此处的转换可能是平台依赖的
unsigned long long thread_id = static_cast<unsigned long long>(handle);
std::cout << "Thread ID: " << thread_id << std::endl;
return 0;
}
```
需要注意的是,最后的转换可能是平台依赖的,需要根据具体的操作系统进行不同的转换。在 Windows 上,可以将本地句柄转换为线程 ID,如下所示:
```c++
unsigned long long thread_id = GetThreadId(handle);
```
在 Linux 上,可以将本地句柄转换为 `pthread_t` 类型,如下所示:
```c++
pthread_t pthread_id = pthread_self();
```
阅读全文