注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

NPTL (Native POSIX Thread Library)和LinuxThreads  

2013-11-15 10:25:33|  分类: linux相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

http://www.drdobbs.com/open-source/nptl-the-new-implementation-of-threads-f/184406204

上面这篇文章不错,NPTL是为了替换LinuxThreads的。不同的线程管理模型。LinuxThreads是用进程来模拟线程的,还有一个全局的管理进程。NPTL这种,针对linuxthreads的缺点做了改进吧,创建线程速度性能大幅度提升吧。对posix thread标准的支持也更好。2.6内核开始一般都是NPTL了,已经合并进libc里面了。 不过redhat 3里面2.4内核也是用NPTL,可能是这个东西是redhat的人开发的,自己做了backport。 不过有的旧系统是为了兼容旧的LinuxThreads吧,同时有安装有两个版本libc的。

下面这条命令可以检测,使用的pthread到底是什么版本。

getconf GNU_LIBPTHREAD_VERSION


下面这个变量的定义,可以让动态链接器在2.6内核上面链接也使用LinuxThreads

export LD_ASSUME_KERNEL=2.4.10   

这个应该对应编译glibc时configure的--enable-kernel 参数吧。

可以设置这个变量之后,再用getconf GNU_LIBPTHREAD_VERSION 和ldd命令来检测一下。



[root@]# locate libpthread.so

/usr/lib/libpthread.so

/usr/lib/nptl/libpthread.so

/lib/i686/libpthread.so.0

/lib/tls/libpthread.so.0

/lib/libpthread.so.0



在一个redhat3的机器上可以看到有3个libpthread.so,应该优先是使用tls目录下的吧,除非你设置了那个 LD_ASSUME_KERNEL变量。 

/lib/libpthread.so.0    这个对应的应该是LinuxThreads

/lib/tls/libpthread.so.0   这个对应的应该是NPTL。 ldd看到程序加载的也是NPTL那个了。


[root@ bright]# /lib/libc.so.6
GNU C Library stable release version 2.3.2, by Roland McGrath et al.
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.2.3 20030502 (Red Hat Linux 3.2.3-56).
Compiled on a Linux 2.4.20 system on 2007-06-12.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
linuxthreads-0.10 by Xavier Leroy
The C stubs add-on version 2.1.2.
BIND-8.2.3-T5B
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Glibc-2.0 compatibility add-on by Cristian Gafton
libthread_db work sponsored by Alpha Processor Inc
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.


[root@ bright]# /lib/tls/libpthread.so.0
NPTL 0.60 by Ulrich Drepper
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Forced unwind support included.



不过像pthread_cond_t 这个基本结构定义在系统的两个头文件里面都有,而且struct不一样的。一个是glibc的develrpm包里面,一个是nptl-devel包里面的。新版的nptl都是集成在glibc里面的了,这个很容易理解。不知道那时为什么有一个nptl-devel 不知道怎么使用的?


NPTL 的设计者写文档,有些简单的介绍 http://people.redhat.com/drepper/nptl-design.pdf



  评论这张
 
阅读(777)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017