赞
踩
在Linux中,我们可以通过如下命令查看多线程程序的执行情况:
top -H -p pid
例如:如下top显示界面:
如上图所示,PID为:12982的线程,cpu占用率达到320%,其实这个程序是一个多线程程序,那么我们想看它的子线程,那么如何查看呢?
通过如下命令即可:
top -H -p 12982
结果如下图:
通过上图,我们便可以看到该进程下面有多个子线程在运行,只不过占据着不同的 cpu 核心。
那么,我们如何在程序里去获得这些 PID 的值呢?
方法如下:
#include
#include //Linux system call for thread id
#include
#include
void *nbi(void *arg)
{
int i;
printf("child thread lwpid = %u\n", syscall(SYS_gettid));
printf("child thread tid = %u\n", pthread_self());
scanf("%d", i);//code dump
}
int main()
{
pthread_t tid;
int rc;
printf("main thread lwpid = %u\n", syscall(SYS_gettid));
printf("main thread tid = %u\n", pthread_self());
rc = pthread_create(&tid, NULL, nbi, NULL);
assert(0 == rc);
pthread_join(tid, NULL);
return 0;
}
请注意方法:syscall(SYS_gettid),这个方法所获取的lwpid,正是在top中显示出来的 PID.
文章的脚注信息由WordPress的wp-posturl插件自动生成
|2|left
打赏
微信扫一扫,打赏作者吧~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。