您的位置:首页 > 运维架构 > Linux

【博客6】linux中:线程的两个“id”

2019-04-13 17:11 363 查看

内容:linux的一个进程中可以包含多个线程,那么进程的id通过getpid()得到,那么线程的id要如何得到呢?

解析:线程的id其实有两个,一个是在进程内表示的id,一个是在内核看来真正的id。

测试代码:



测试结果:

结论:
1.可以看到在进程中的id和在内核看来的id是不一样的
2.在进程中的id表示只保证在此进程中是唯一的,不同进程中的线程id是可能相同的
3.当你给一个进程的线程发生消息,应该采取真正的线程id,而不是它在线程中表示的id
4.任何时刻都是唯一的,并且由于linux分配新的pid采用递增轮回办法,如果对一个线程回收,再分配一个线程,会发现这个新线程的id是刚才上一个回收的旧线程的id
5.因此:getpid()得到的是进程的pid,在内核中,每个线程都有自己; 要得到线程的PID,必须用syscall(SYS_gettid); pthread_self()函数获取的是线程ID

大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: