【博客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
大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。
相关文章推荐
- LINUX 用ssh访问提示用户名密码不对,是因为/root/.ssh/目录下少authorized_keys2和id_dsa这两个文件
- linux查看某个进程的线程id(spid)
- Linux线程ID和进程ID
- <linux线程>POSIX无名信号量的基本操作---两个线程间的通信
- 关于Linux线程id衍生出的讨论
- linux 获取线程ID的方法
- Linux获取线程id的方法学习
- Linux C获取线程ID
- Linux下获得线程ID
- Linux 2. 关于pthread_cond_signal 唤醒两个线程的问题
- Linux线程之线程栈 http://blog.chinaunix.net/uid-22590270-id-3673013.html
- linux 开多(N)线程 获得线程ID
- linux下多线程学习4_打印线程id和进程id
- 在linux上获得线程id的方法
- 如何在Windows和Linux下获取当前线程的ID号
- 找到linux获得java线程ID的方法
- [转]Linux 下的线程读写锁 - 空穴来风 - C++博客
- linux下实现两个线程之间的通信
- linux 线程id 与进程id对应关系
- linux下获取线程id