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