在
第11章线程中11.4中讲到Linux的pthread实现是用clone系统调用产生一个与父进程共享一定资源的轻量级子进程来模拟线程。书中的实验代码表明,pthread_create产生的线程有不同的process id,证实了Linux线程实际上是用进程实现。网上的文章谈及Linux线程概念无一例外是这个观点。然后这一切在2.6内核产生了变化,网上的文章已经out了.
我照着书中代码在fedora 7中用新版的gcc编译,产生出的多个线程却有一样的process id!!!经过翻查资料,原来在2.6版本内核中使用了NPTL线程模型,据说NPTL在大量线程时有较大的性能提升,他的内部实现与传统的LinuxThread有较大的变化。于是乎就有相同的pid这一想象。
更多关于NPTL可以参考以下链接:
Linux多线程编程和Linux 2.6下的NPTL
LinuxThreads和NPTL
阅读(895) | 评论(0) | 转发(0) |