2015-05-13 38 views
0

现在我这样做:如何获取C++程序的线程ID?

std::cout << pthread_self() << std::end; 

但好像返回一个十六进制数。我如何使用pthread_t.h库中的某个函数以十进制形式获取实际线程ID?

+2

您无法从pthreads API获取该信息,因为pthreads API被设计为可移植 - 特别是,即使在没有整数线程ID的系统上,它也可以工作。这就是为什么pthread_self()返回一个实现定义/不透明类型(pthread_t)而不是更具体的类型,以及为什么你甚至不能使用==运算符比较pthread_t值(您必须改为调用pthread_equals())。简短的答案是:您需要使用特定于操作系统的API(如gettid())来获取所需的信息。 –

+0

可能的重复[如何从任意pthread \ _t获取线程ID](http://stackoverflow.com/questions/558469/how-do-i-get-a-thread-id-from-an -arbitrary-pthread-t) – NikolayKondratyev

+0

你为什么在意?如果您需要唯一标识线程,只需将它们分配给您自己的ID。 –

回答

0

如果您希望线程具有符合特定要求的ID,请将它们分配一个。如果没有你做出一些事情来实现它,他们不会“只是碰巧拥有一个”。