POSIX NTPL 线程库简介
来源:互联网 发布:淘宝店哪里有货源 编辑:程序博客网 时间:2024/05/20 21:59
在Linux操作系统中,本地POSIX线程库(NPTL)是一种软件特性,它可让Linux的内核,高效地运行那些使用POSIX风格的线程所编写的程序。
测试中,NPTL在一个IA-32处理器上,成功地同时跑了10万个线程,启动这些线程只用了不到2秒。比较起来,在不支持NPTL的内核上,这个测试花费了大约15分钟。
以前(也就是在2.6内核以前),Linux把进程当作其调度实体,内核并不真正支持线程。可是,它提供了一个clone()系统调用——创建一个调用进程的拷贝,这个拷贝与调用者共享地址空间。LinuxThreads项目就是利用这个系统调用,完全在用户级模拟了线程;不幸的是,它与真正的POSIX标准在一致性上面存在大量的问题,在信号处理,任务调度,以及进程间同步原语方面尤为突出。
要改进LinuxThreads,显然需要一些内核方面的支持,并重写线程库。针对于这一需求的两个竞争项目启动了——NGPT,或称下一代POSIX线程,由包括来自IBM的开发者在内的一个团队进行开发;NPTL是由Red Hat的开发者来开发的,两者同时进行。但是,NGPT已在2003年年中就被放弃了。
NPTL的使用与LinuxThreads极为相似,这是由于,其主要的抽象依然被内核认为是一个进程,而且新线程的创建,使用的还是clone()系统调用(来自NPTL的调用)。可是,NPTL需要专有的内核支持来实现在竞争情况下可使线程睡眠或被再唤醒的同步原语。用在这儿的原语,被认为是一个Futex(不要与mutex相混淆)。
NPTL号称是1x1的线程库,这是由于用户所创建的线程(通过pthread_create()库函数)与内核的调度实体(在Linux内是进程)1-1对应。这是最简单的合理线程实现了。一个备选方案是m x n的,就是说用户级线程要多于调度实体,如果以这种方式实现的话,由线程库负责在可用的调度实体上调度用户线程。这会使得线程上下文切换非常的快,因为它避免了系统调用,但是它也增加了复杂性和优先级反转的可能性。
NPTL的第一版发布在Red Hat 9.0中。老式的POSIX线程库众所周知的问题是有些时候线程会拒绝向系统让出控制权,因为这种事情发生时,它得不到让出控制权的机会。还有些事情Windows会做得更好。Red Hat在Java的站点上的一篇关于Java在Red Hat 9上的文章中声称NPTL已经解决了这些问题。
自从Red Hat Enterprise Linux第3版开始,NPTL就已经成为它的一部分,现在它已经完全的集成到Glibc中了。
- POSIX NTPL 线程库简介
- NTPL线程创建流程
- POSIX线程之一.简介
- Posix线程编程API简介
- POSIX线程库
- posix线程库1
- posix线程库<一>
- C++之多线程(posix简介)
- POSIX thread (pthread) 库简介
- 本地POSIX线程库(NPTL)
- POSIX简介
- POSIX简介
- POSIX简介
- Posix 线程
- Posix线程
- POSIX线程
- POSIX 线程
- POSIX线程
- 深入理解iPhone委托模式兼谈iPhone生命周期
- 程序异常退出时发送邮件报告的代码
- js弹出层(DIV)
- VirtualBox虚拟机Ubuntu找不到网卡的解决方法
- JS弹出层代码
- POSIX NTPL 线程库简介
- Android 中的ListView选中项的背景颜色怎么设置?
- window.showModalDialog模式对话框 和 window.open的区别
- linux内核入门集
- 研一第一个学期的结束
- Linux 用户(user)和用户组(group)管理概述
- Part1:A Brief Study of Classes and Object-oriented Programming.
- Eclipse快捷键整理
- Transforms CTM, 转换矩阵