代码之家  ›  专栏  ›  技术社区  ›  user9876

如何在Linux中命名线程?[复制品]

  •  38
  • user9876  · 技术社区  · 17 年前

    这个问题已经有了答案:

    我有一个用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 回复  |  直到 13 年前
        1
  •  42
  •   allyourcode    13 年前

    POSIX线程?

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

      #include <sys/prctl.h>
      prctl(PR_SET_NAME,"<null> terminated string",0,0,0)
    
        2
  •  14
  •   lothar    17 年前

    如果你使用的是像 ACE 这个 Thread 有一种方法可以在创建新线程时指定线程名称。

    BSD Unix还具有 pthread_set_name_np 打电话。

    否则你可以用 prctl 正如福斯帕因提到的。