我的应用程序中有许多活动线程,我有pthread_t
个ID,如果需要可以获取其他ID。这些存储在一个单独的数组中。
如何确定从另一个线程调用特定线程当前正在运行的CPU(或最近运行的那个)的ID /编号。
sched_getcpu(2)
仅适用于调用线程,pthread_getaffinity_np
仅为我提供允许的cpu掩码。 /proc
同样无用,只给我一个整个过程的CPU ID。
我需要这个来调试/调整NUMA感知代码。
答案 0 :(得分:2)
至少在Lnux上,你可以通过调用tid
获得每个线程的gettid()
。
然后通过读取/proc/<pid>/task/<tid>/stat
中的第39个元素来查找CPU ID。
(其中pid
通过getpid()
)
另见: