科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux线程比较:LinuxThreads 和NPTL (4)

Linux线程比较:LinuxThreads 和NPTL (4)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

NPTL 线程库所引入的一个实现特性是对 ABI(应用程序二进制接口)的支持。这帮助实现了与 LinuxThreads 的向后兼容性。这个特性是通过使用 LD_ASSUME_KERNEL 实现的,下面就来介绍这个特性。

作者:Vikram Shukla 来源:chinaunix 2007年10月31日

关键字: NPTL 比较 线程 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

• NPTL 线程库所引入的一个实现特性是对 ABI(应用程序二进制接口)的支持。这帮助实现了与 LinuxThreads 的向后兼容性。这个特性是通过使用 LD_ASSUME_KERNEL 实现的,下面就来介绍这个特性。

LD_ASSUME_KERNEL 环境变量

正如上面介绍的一样,ABI 的引入使得可以同时支持 NPTL 和 LinuxThreads 模型。基本上来说,这是通过 ld (一个动态链接器/加载器)来进行处理的,它会决定动态链接到哪个运行时线程库上。

举例来说,下面是 WebSphere® Application Server 对这个变量所使用的一些通用设置;您可以根据自己的需要进行适当的设置:

• LD_ASSUME_KERNEL=2.4.19:这会覆盖 NPTL 的实现。这种实现通常都表示使用标准的 LinuxThreads 模型,并启用浮动堆栈的特性。

• LD_ASSUME_KERNEL=2.2.5:这会覆盖 NPTL 的实现。这种实现通常都表示使用 LinuxThreads 模型,同时使用固定堆栈大小。

我们可以使用下面的命令来设置这个变量:

export LD_ASSUME_KERNEL=2.4.19

注意,对于任何 LD_ASSUME_KERNEL 设置的支持都取决于目前所支持的线程库的 ABI 版本。例如,如果线程库并不支持 2.2.5 版本的 ABI,那么用户就不能将 LD_ASSUME_KERNEL 设置为 2.2.5。通常,NPTL 需要 2.4.20,而 LinuxThreads 则需要 2.4.1。

如果您正运行的是一个启用了 NPTL 的 Linux 发行版,但是应用程序却是基于 LinuxThreads 模型来设计的,那么所有这些设置通常都可以使用。

GNU_LIBPTHREAD_VERSION 宏

大部分现代 Linux 发行版都预装了 LinuxThreads 和 NPTL,因此它们提供了一种机制来在二者之间进行切换。要查看您的系统上正在使用的是哪个线程库,请运行下面的命令:

$ getconf GNU_LIBPTHREAD_VERSION

这会产生类似于下面的输出结果:

NPTL 0.34

或者:

linuxthreads-0.10

Linux 发行版所使用的线程模型、glibc 版本和内核版本

表 1 列出了一些流行的 Linux 发行版,以及它们所采用的线程实现的类型、glibc 库和内核版本。

表 1. Linux 发行版及其线程实现

线程实现 C 库 发行版 内核

LinuxThreads 0.7, 0.71 (for libc5)   libc 5.x      Red Hat 4.2  
LinuxThreads 0.7, 0.71 (for glibc 2) glibc 2.0.x   Red Hat 5.x  
LinuxThreads 0.8                     glibc 2.1.1   Red Hat 6.0  
LinuxThreads 0.8                     glibc 2.1.2   Red Hat 6.1 and 6.2  
LinuxThreads 0.9                                   Red Hat 7.2 2.4.7 
LinuxThreads 0.9                     glibc 2.2.4   Red Hat 2.1 AS                2.4.9 
LinuxThreads 0.10                    glibc 2.2.93  Red Hat 8.0                   2.4.18 
NPTL 0.6                             glibc 2.3     Red Hat 9.0                   2.4.20 
NPTL 0.61                            glibc 2.3.2   Red Hat 3.0 EL                2.4.21 
NPTL 2.3.4                           glibc 2.3.4   Red Hat 4.0                   2.6.9 
LinuxThreads 0.9                     glibc 2.2     SUSE Linux Enterprise  7.1    2.4.18 
LinuxThreads 0.9                     glibc 2.2.5   SUSE Linux Enterprise  8      2.4.21 
LinuxThreads 0.9                     glibc 2.2.5   United Linux                  2.4.21 
NPTL 2.3.5                           glibc 2.3.3   SUSE Linux Enterprise  9      2.6.5
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章