pthread 线程名称 和 top 查看线程

 新创建的线程在不设置名称的情况下,默认用的是程序的名称,设置线程名称函数:

#include <pthread.h>
int pthread_setname_np(pthread_t thread, const char *name);

经测试,在Linux 版本为 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 上,其名称最长为16字符(包括了末尾的\0),所以有效字符为15个。

成功时,返回0,失败时返回是非0,但失败时并不会设置errno,所以失败时不能用 errno 来获取相关信息,但失败的情况比较简单,如 man pthread_setname_np 里所说的:

而这个 ERANGE 其值为34,如果像这样加打印,用errno是没有用的。

 

失败的原因就是设置的线程名称超过允许的长度了,应该保证在15个有效字符内。

程序运行起来后,我们可以用 top -H 来查具体的线程信息,或者用 top -H -p pid 来查看指定进程有关线程信息,如:

 线程名称过长,已经被截断。分享一个脚本,用于查看指定程序的进程/线程信息,如下:

#!/bin/sh

if [ $# != 1 ]; then
    echo "Usage: $0 app_name"
    exit
fi

app_name=$1
function top_app
{
    echo "top process $1"
    pid=`pidof $1`
    if [ "${pid}" != "" ]; then
        top -H -p ${pid}
    else
        echo "no such process of ${app_name}"
    fi
}

top_app ${app_name}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pthread是一种使用C语言编写的多线程库,它可以方便地实现多线程并行编程。使用pthread库,我们可以在一个进程中创建多个线程,每个线程可以同时执行不同的任务,以实现并行处理。 pthread库的优势主要有以下几点: 1. 提高程序的运行效率:多线程可以将一个任务划分成若干个子任务,每个子任务由一个线程处理,从而充分利用多核处理器的性能,提高程序的运行效率。 2. 提升程序的响应性能:多线程可以将繁重的计算或耗时的任务放在后台线程中进行处理,使得前台线程能够响应用户的操作,提升程序的响应性能。 3. 简化编程复杂度:使用pthread库可以方便地创建、管理和控制多个线程,提供了丰富的线程相关的函数和工具,可以简化多线程编程的复杂度。 在pthread线程并行编程中,我们需要注意以下几点: 1. 线程的创建和销毁:使用pthread库可以通过pthread_create函数创建一个新线程,并通过pthread_join函数等待线程的结束。在合适的时机,我们需要使用pthread_exit函数主动退出线程,以释放资源。 2. 线程的同步和互斥:多个线程之间可能会访问共享资源,我们需要使用pthread_mutex_t互斥锁来确保同一时间只有一个线程可以访问共享资源,以避免竞争条件的发生。 3. 线程的通信和协作:线程之间可以通过共享内存、全局变量等方式进行通信。多个线程之间可以通过条件变量(pthread_cond_t)和信号量(sem_t)等机制进行协作,实现任务的分配和控制。 总之,pthread线程并行编程可以充分利用多核处理器的性能,实现任务的并行处理,提高程序的运行效率和响应性能。但在编程过程中需要注意线程的创建和销毁、线程的同步和互斥、线程的通信和协作等问题,以确保多线程程序的正确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值