在 Linux C 程序中,如何打印由 pthread 库创建的线程的线程 ID?例如,我们如何通过 getpid()
获取进程的 pid。
原文由 Ravi Chandra 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Linux C 程序中,如何打印由 pthread 库创建的线程的线程 ID?例如,我们如何通过 getpid()
获取进程的 pid。
原文由 Ravi Chandra 发布,翻译遵循 CC BY-SA 4.0 许可协议
什么?该人要求特定于 Linux,以及 getpid() 的等价物。不是 BSD 或苹果。答案是 gettid() 并返回一个整数类型。您必须使用 syscall() 调用它,如下所示:
#include <sys/types.h>
#include <unistd.h>
#include <sys/syscall.h>
....
pid_t x = syscall(__NR_gettid);
虽然这可能无法移植到非 linux 系统,但 threadid 可以直接比较并且获取速度非常快。它可以像普通整数一样打印(例如用于 LOG)。
原文由 Evan Langlois 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.6k 阅读
4 回答4.2k 阅读
2 回答966 阅读✓ 已解决
2 回答3.5k 阅读
1 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
1 回答575 阅读✓ 已解决
pthread_self()
函数将给出当前线程的线程ID。pthread_self()
函数返回调用线程的 Pthread 句柄。 pthread_self() 函数不返回调用线程的整体线程。您必须使用pthread_getthreadid_np()
返回线程的完整标识符。笔记:
比这些调用快得多,但提供相同的行为。