嵌入式ARM程序高级调试技能:25. linux CPU占比高,某线程占用高的原因分析-pthread_self()调用多
嵌入式ARM程序高级调试技能:25. linux CPU占比高,某线程占用高的原因分析-pthread_self()调用多
Linux平台高效线程ID获取实现
以下是几种在Linux系统下高效获取线程ID的实现方法,相比标准pthread_self()
有更好的性能表现。
1. 系统调用直接实现(兼容性最好)
#include <sys/syscall.h>
#include <unistd.h>static inline pid_t cpu_get_tid() {return syscall(SYS_gettid);
}
特点:
- 直接使用
gettid
系统调用 - 兼容所有Linux内核版本
- 返回内核级线程ID(LWP)
- 每次调用都有系统调用开销
2. 通过glibc内部TLS访问(性能最优)
#include <sys/types.h>static inline pid_t cpu_get_tid() {/* 直接访问glibc内部存储的线程ID */return (pid_t)(uintptr_t)__builtin_thr