如何在Linux中命名一个线程?

我有一个用C / C ++编写的multithreadingLinux应用程序。 我select了我的线程名称 。 为了帮助debugging,我希望这些名字在GDB,“top”等中可见。这是可能的,如果是的话,怎么样?

(有足够的理由知道线程名称,现在我想知道哪个线程占用了50%的CPU(由'top'报告),而且在debugging时我经常需要切换到另一个线程 – 目前我必须做“ thread apply all bt ”,然后通过backtrace输出页面来查找正确的线程)。

Windows解决scheme在这里 ; 什么是Linux的?

Posix主题?

这显然不会编译,但它会给你一个去哪里打猎的想法。 我甚至不确定它是正确的PR_命令,但我认为是。 有一阵子了…

  #include <sys/prctl.h> prctl(PR_SET_NAME,"<null> terminated string",0,0,0) 

如果您正在使用类似ACE的库,那么线程可以在创build新线程时指定线程名称。

BSD Unix也有一个pthread_set_name_np调用。

否则,你可以使用Fusspawn提到的prctl。