免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2915 | 回复: 1
打印 上一主题 下一主题

Linux下线程是如何分配ID的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-27 21:53 |只看该作者 |倒序浏览
在Linux下,线程ID是无符号的长整形,输出看是3085208464与3076815760,与进程号的分配完全不同。创建一个线程时是按照什么规则分配线程号的?

[ 本帖最后由 TAW 于 2009-1-30 21:42 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-01-28 19:53 |只看该作者
Linux线程在核内是以轻量级进程的形式存在的,拥有独立的进程表项,而所有的创建、同步、删除等操作都在核外pthread库中进行。pthread 库使用一个管理线程(__pthread_manager(),每个进程独立且唯一)来管理线程的创建和终止,为线程分配线程ID,发送线程相关的信号(比如Cancel),而主线程(pthread_create())的调用者则通过管道将请求信息传给管理线程。

这个是pthread线程库里的实现,也就是说早期的pthread线程库中,是在核外有个专门的线程在管线程id分配的,在C库里。

对于目前流行的NPTL线程库,具体线程ID的分配管理是否在C库中,还有待确定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP