如何在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。