当前位置:   article > 正文

linux 线程id 和lwpid,【分享】C/C++获取top中显示的线程id,C/C++获取lwpid | 勤奋的小青蛙...

lwpid

在Linux中,我们可以通过如下命令查看多线程程序的执行情况:

top -H -p pid

例如:如下top显示界面:

294baaa332f27cb14e2c5e4e26abc15e.png

如上图所示,PID为:12982的线程,cpu占用率达到320%,其实这个程序是一个多线程程序,那么我们想看它的子线程,那么如何查看呢?

通过如下命令即可:

top -H -p 12982

结果如下图:

f949dbd2fa27a71768dfb70a848a85a4.png

通过上图,我们便可以看到该进程下面有多个子线程在运行,只不过占据着不同的 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

打赏

1b6439c6a040252321edad911c85491b.png微信扫一扫,打赏作者吧~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/70222
推荐阅读
相关标签
  

闽ICP备14008679号