我正在编写使用pthreads的简单应用程序。线程是否可以获取有关运行哪个核心的信息?我正在尝试使用线程的线程亲和性,因此了解线程将运行的核心的详细信息将非常有用。
答案 0 :(得分:3)
您可以使用 top
命令。
特别是:
top -H -p PID
您可以看到线程列表(针对单个进程)以及运行线程的CPU核心。
另外,您可以查看/proc/PID/task/TID/stat
。
要引用/proc/
的阅读信息,请查看:Kernel.org
对于特定TID
,如果执行:
`cat /proc/PID/task/TID/stat`
你会得到类似的东西:
1469(proc_name) S 1 1463 1463 0 -1 4202560 32 0 0 0 0 0 0 0 25 5 3 0 1287407887 305942528 507 102400000 1 1 0 0 0 0 0 4096 83179 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
其中从开始的第三个字段是线程的状态(在本例中为休眠),而从结尾开始的第六个字段是它最后运行的核心。
在proc man page的/proc/[pid]/stat
部分中,每个字段都会被解释(在您的情况下是第39个字段)。