目录
1. prctl() (只能给当前线程设置名称)
2、pthread_setname_np
1. prctl() (只能给当前线程设置名称)
#include
iErr = prctl(PR_SET_NAME, “Hello_project”);
第一个参数是操作类型,指定PR_SET_NAME,即设置进程名
PR_SET_NAME:设置当前线程的名字
PR_GET_NAME:获得当前线程的名字
第二个参数是进程名字符串,长度至多16字节
prctl 缺点
prctl()只能设置/获取当前线程的名字
注意:只能设置本线程的名称,传入参数线程名超出长度,会自动截断
2、pthread_setname_np
#include
pthread_setname_np(stThreadId, pstThread->pcThreadName);
由于prctl的缺点,所以pthread_setname_np()和pthread_getname_np应运而生,能设置指定线程的名称。
注意:
pthread_setname_np传入参数线程名超出长度,不会自动截断,而是会返回错误码ERANGE(因为是非pthread标准实现,不同操作系统可能表现不一样)。
C++ 设置线程名称_落羽的专栏-CSDN博客
参考
https://blog.csdn.net/bad_good_man/article/details/48787031
C++ 11区别
在我创建的测试程序中,它们为它们的线程返回相同的int值,所以我不知道它们有什么不同。
我在Windows上使用GCC 4.8.1。
从this reference:
get_id返回线程的ID
和
native_handle返回底层实现定义线程处理
get_id返回的线程标识符实际上应该是一个类(std::thread::id),而不是数字或其他平台特定的句柄。
native_handle函数返回其名称所暗示的一个本机句柄,可以由底层操作系统线程函数使用。在Windows上,这通常是,由CreateThread返回,在POSIX平台上,它典型地为pthread_t,由pthread_create初始化。
get_id()和native_handle()">C++ 11区别 get_id()和native_handle()http://cn.voidcc.com/question/p-zyripnme-bok.html


