使用posix api从线程id获取线程名称

时间:2011-02-22 15:37:54

标签: c++ posix

我有一个要求,我必须从线程ID获取线程名称,或者如果不可能如何获取线程名称。在这里,我不是创建线程。我正在创建库,这个库由应用程序使用,库代码将在应用程序线程上下文中运行,我想在控制台日志中打印线程名称,以便知道日志正在提交此特定线程。这应该使用posix api来实现,以便它可以移植。

提前感谢您的所有投入

4 个答案:

答案 0 :(得分:2)

没有这样的东西。但是除了线程ID 之外的信息可能对添加到您的日志很有用,例如调用时间,源代码的文件名以及行号执行调用的地方。

答案 1 :(得分:1)

据我所知,posix线程没有名称,但您可以使用TLS来存储名称。有关示例,请参阅here(不使用字符串)。

答案 2 :(得分:0)

没有POSIX api将名称附加到帖子。

在Linux上,你可以prctl(PR_SET_NAME, ...)。请参阅man prctl

答案 3 :(得分:0)

pthread_getname_np()中似乎有pthread_setname_np()pthread.h,分别用于获取和设置线程的显示名称。但是,它被条件句所包围,表明它是非标准的GNU扩展。

您可能要检查要编译的pthread.h,并查看是否已定义函数。如果您的代码需要具有可移植性,请确保将这些调用包含在条件句中。

相关问题