C++11 线程支持具有std::this_thread::get_id()函数,该函数返回一个可以序列化为流的std::thread::id实例。然后你可以尝试unsigned long
从流中读取一个并返回 ir。像这样的东西:
#include <thread>
#include <iostream>
#include <sstream>
unsigned long current_thread_id()
{
std::stringstream id_stream;
id_stream << std::this_thread::get_id();
unsigned long id;
id_stream >> id;
return id;
}
int main(int argc, char** argv)
{
std::cout << current_thread_id();
return 0;
}
因此,在此代码段中,该current_thread_id
函数是您正在寻找的功能,但您应该添加适当的错误处理(线程 id 可能并不总是一个数字,在这种情况下,您将无法从流中读取数字,您应该处理因此)。
话虽如此,也许只使用GetCurrentThreadId,因为您已经在介绍 Linux 特定的pthread_self
.