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

时间:2009-04-22 16:21:02

标签: c++ c linux multithreading

我有一个用C / C ++编写的多线程Linux应用程序。我有chosen names for my threads。为了帮助调试,我希望这些名称在GDB,“top”等中可见。这是可能的,如果是这样的话?

(有很多reasons to know the thread name。现在我想知道哪个线程占用了50%的CPU(由'top'报告)。而在调试时我经常需要切换到不同的线程 - 目前我必须做“thread apply all bt”然后查看回溯输出的页面以找到正确的线程。)

Windows solution is here;什么是Linux?

2 个答案:

答案 0 :(得分:43)

Posix线程?

这显然不会编译,但它会让你知道去哪里打猎。我甚至不确定它是正确的PR_命令,但我认为它是。已经有一段时间......

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

答案 1 :(得分:14)

如果您使用的是ACE这样的库,Thread可以在创建新线程时指定线程名称。

BSD Unix还有一个pthread_set_name_np电话。

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