Chinaunix
标题:
Linux下线程是如何分配ID的?
[打印本页]
作者:
TAW
时间:
2009-01-27 21:53
标题:
Linux下线程是如何分配ID的?
在Linux下,线程ID是无符号的长整形,输出看是3085208464与3076815760,与进程号的分配完全不同。创建一个线程时是按照什么规则分配线程号的?
[
本帖最后由 TAW 于 2009-1-30 21:42 编辑
]
作者:
samon_fu
时间:
2009-01-28 19:53
Linux线程在核内是以轻量级进程的形式存在的,拥有独立的进程表项,而所有的创建、同步、删除等操作都在核外pthread库中进行。pthread 库使用一个管理线程(__pthread_manager(),每个进程独立且唯一)来管理线程的创建和终止,为线程分配线程ID,发送线程相关的信号(比如Cancel),而主线程(pthread_create())的调用者则通过管道将请求信息传给管理线程。
这个是pthread线程库里的实现,也就是说早期的pthread线程库中,是在核外有个专门的线程在管线程id分配的,在C库里。
对于目前流行的NPTL线程库,具体线程ID的分配管理是否在C库中,还有待确定。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2