c 线程库和linux线程库的区别,linux下的线程linuxthreads和NPTL的比较

前段时间在CU上问过这两个线程机制的问题,现在基本上弄清楚了。

以下文字是抄袭+理解+估计:

传统的linuxthreads中和新的NPTL均是1:1模型。在redhat家族中,RH9以前的版本用的是linuxthreads,即有一个用户级的管理线程来维护;但在这以后,都是NPTL,用户态不再需要管理线程了。当然这是表面上的区别,实质的区别主要是其处理机制,NPTL的设计目标归纳可归纳为以下几点:

* POSIX兼容性

* SMP结构的利用

* 低启动开销

* 低链接开销(即不使用线程的程序不应当受线程库的影响)

* 与LinuxThreads应用的二进制兼容性

* 软硬件的可扩展能力

* 多体系结构支持

* NUMA支持

* 与C++集成

在fedora4系统中, 通过以下命令可以看到一个进程中各个线程的ID号(PID是进程的pid):

ls -l /proc/PID/task/

在redhat9以及redhat以后的发行版本(fedora, AS...)中,均是使用NPTL模式的,虽然redhat9是2.4内核。通常这样验证自己的系统是否支持NPTL,存在类似以下红色行表示支持:

[root@localhost transmitdemo]# getconf GNU_LIBPTHREAD_VERSION

NPTL 2.4

[root@localhost transmitdemo]# /lib/libc.so.6

GNU C Library development release version 2.4, by Roland McGrath et al.

Copyright (C) 2006 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 4.1.0 20060304 (Red Hat 4.1.0-2).

Compiled on a Linux 2.6.9 system on 2006-03-07.

Available extensions:

The C stubs add-on version 2.1.2.

crypt add-on version 2.1 by Michael Glad and others

GNU Libidn by Simon Josefsson

GNU libio by Per Bothner

NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk

Native POSIX Threads Library by Ulrich Drepper et al

BIND-8.2.3-T5B

Thread-local storage support included.

For bug reporting instructions, please see:

<>.

另外我测试NPTL的创建/销毁速度:

硬件: intel 2.8 支持超线程; 512M ddr;

操作系统: fedora4发行版;

创建线程数:1000 ; 5000; 10k; 50k; (调用pthread_create()后调用pthread_cancel()锁毁线程);

时间: 0.03-0.08秒; 0.13-0.14秒; 0.25-0.26; 1.3秒

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值