其实我一直都不知道线程还可以起名字的,是刚才调程序性能时在top里发现程序里有几条线程名字跟程序进程的名字不一样,显示的是rocksdb的名字。
后来查了一下发现Linux有提供接口可以设置线程的名字。
看到这个我就有把自己用到的线程都起名字的想法了,一方面原先gdb调试时由于线程特别多,难以定位到目标线程,只能从日志中找到相关线程的id转成16进制数值再去gdb里面一条一条线程对比特别麻烦。
另一方面线程有了名字之后就可以在top里显示各线程的状态了,对于性能调优帮助非常大。
具体做法也很简单,一个头文件一个api就够了
// 头文件
#include <sys/prctl.h>
// 调用api
prctl(PR_SET_NAME, "thread name");
@