当前位置: 首页 > 面试题库 >

如何在Linux pthreads中设置线程的名称?

欧阳勇军
2023-03-14
问题内容

有什么办法可以在Linux中设置线程的名称?

我的主要目的是在调试时会有所帮助,并且如果通过例如暴露该名称也很好 /proc/$PID/task/$TID/...


问题答案:

prctl(2)功能与选项一起使用PR_SET_NAME(请参阅docs)。

请注意,旧版本的文档有些令人困惑。他们说

设置调用进程的进程名称

但是由于线程是Linux上的轻量级进程(LWP),因此在这种情况下,一个线程就是一个进程。

您可以使用ps -o cmd或使用以下命令查看线程名称:

cat /proc/$PID/task/$TID/comm

或在之间()cat /proc/$PID/task/$TID/stat

4223 (kjournald) S 1 1 1 0...

或从GDB info threads双引号之间:

* 1    Thread 0x7ffff7fc7700 (LWP 6575) "kjournald" 0x00007ffff78bc30d in nanosleep () at ../sysdeps/unix/syscall-template.S:84


 类似资料:
  • 我在Java学习线程,有一个这样的小程序。我创建一个线程,并用它来创建另一个线程。但是我不能改变第二个线程的名称。有人能解释为什么会这样吗?此外,Thread.sleep(100)意味着主线程将Hibernate100毫秒是正确的吗?谢谢。 该计划的结果如下: 编辑:如果我将getName()更改为Thread。currentThread()。getName()然后一切都按预期工作。它们之间有什么

  • 问题内容: 我已经成功设置了Spring Batch项目教程。我真的很想知道是否有可能在“ Spring级别”使它成为多线程的。 我想要的基本思想是列出任务或任务步骤的列表,并让它们由独立的线程拾取和处理,理想情况下是从限制为“ n”个线程的池中进行。 这可能吗?如果是这样,怎么办?有人可以引导我到我目前所在的位置吗? 简单的项目我是从本教程在这里。它基本上具有不同的任务,这些任务将消息打印到屏幕

  • 多线程。在这种模式下,SQLite可以安全地由多个线程使用,前提是在两个或多个线程中不同时使用单个数据库连接。 序列化。在序列化模式下,SQLite可以安全地由多个线程使用,不受限制。

  • 问题内容: 我写一个简单的应用程序,它涉及三个线程: ,和。 是 生成* 并馈给的生成器类。 * 消耗了 计算平均值。我的号码已经使用该饲料用。用途吃起来。 问题是:: 如果平均值超过中的1E5 ,我想表示停止产生数字。我有一个在需要被打开。我该如何实现? PS:该代码将永久运行,而无需在控制台上打印任何内容,我至今仍未弄清原因!! 问题答案: 您可以使用并将它传递给两个线程,原子类型是可访问的,

  • 问题内容: 我有一个用C / C++编写的多线程Linux应用程序。我为线程选择了名称。为了帮助调试,我希望这些名称在GDB,“顶部”等中可见。这可能吗?如果可以,怎么办? (有很多[原因可以知道线程名称。现在我想知道哪个线程占用了50%的CPU(由“ top”报告)。在调试时,我经常需要切换到其他线程-目前,我必须做“ ”,然后浏览回溯输出的页面以找到正确的线程。 该视窗解决方案就在这里 ; 什

  • 问题内容: 您可以在构建自定义图像时设置图像名称,如下所示: 有没有一种方法可以在Dockerfile中定义映像的名称,所以我不必在命令中提及它? 问题答案: Dockerfile中不支持图像的标记。这需要在您的构建命令中完成。解决方法是,您可以使用docker- compose.yml进行构建,以标识目标映像名称,然后运行。一个示例docker- compose.yml看起来像 就是说,有人反对