<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Native_POSIX_Thread_Library</id>
	<title>Native POSIX Thread Library - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Native_POSIX_Thread_Library"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Native_POSIX_Thread_Library&amp;action=history"/>
	<updated>2026-06-25T06:47:52Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Native_POSIX_Thread_Library&amp;diff=399596&amp;oldid=prev</id>
		<title>imported&gt;Ohtashinichiro：​使用HotCat已添加Category:C POSIX library</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Native_POSIX_Thread_Library&amp;diff=399596&amp;oldid=prev"/>
		<updated>2023-12-19T09:23:36Z</updated>

		<summary type="html">&lt;p&gt;使用&lt;a href=&quot;/index.php?title=WP:HOTCAT&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:HOTCAT（页面不存在）&quot;&gt;HotCat&lt;/a&gt;已添加&lt;a href=&quot;/wiki/Category:C_POSIX_library&quot; title=&quot;Category:C POSIX library&quot;&gt;Category:C POSIX library&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;{{lang|en|Native POSIX Thread Library}}&amp;#039;&amp;#039;&amp;#039;（&amp;#039;&amp;#039;&amp;#039;{{lang|en|NPTL}}&amp;#039;&amp;#039;&amp;#039;）是[[Linux内核]]中實踐[[POSIX Threads]]標準的函式庫。&lt;br /&gt;
&lt;br /&gt;
测试表明，NPTL能够成功地在[[IA-32]]平台上在两秒鐘内生成100,000个[[多线程|线程]]；相应的没有{{lang|en|NPTL}}的内核将耗费15分钟左右。&amp;lt;ref&amp;gt;{{Cite web |url=http://www.linuxjournal.com/article/6530 |title=引入2.6内核 |accessdate=2008-08-12 |archive-date=2012-01-21 |archive-url=https://www.webcitation.org/64qRgTBuZ?url=http://www.linuxjournal.com/article/6530 |dead-url=no }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web |url=http://people.redhat.com/drepper/nptl-design.pdf |title=The Native POSIX Thread Library for Linux |accessdate=2008-08-12 |archive-date=2012-01-21 |archive-url=https://www.webcitation.org/64qRhElzZ?url=http://www.akkadia.org/drepper/nptl-design.pdf |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
在{{lang|en|Linux}}内核2.6出现之前进程是(最小)可调度的对象，当时的{{lang|en|Linux}}不真正支持线程。但是{{lang|en|Linux}}内核有一个[[系统调用]]指令{{lang|en|clone()}}，这个指令产生一个呼叫调用的進程的复件，而且这个复件与原進程使用同一地址空间。{{lang|en|LinuxThreads}}计划使用这个系统调用来提供一个内核级的线程支持。但是这个解决方法与真正的{{lang|en|POSIX}}标准有一些不相容的地方，尤其是在信号处理、进程调度和进程间同步原语方面。&lt;br /&gt;
&lt;br /&gt;
要提高{{lang|en|LinuxThreads}}的效应很明显需要提供内核支持以及必须重写线程函式库。为了解决这个问题出现了两个互相竞争的项目：一个{{lang|en|[[IBM]]}}的组的项目叫做{{lang|en|NGPT}}（{{lang|en|Next Generation POSIX Threads}}，下一代{{lang|en|POSIX}}线程），另一个组是由{{lang|en|[[Red Hat]]}}程序员组成的。2003年中{{lang|en|NGPT}}被放弃，几乎与此同时{{lang|en|NPTL}}公布了。&lt;br /&gt;
&lt;br /&gt;
{{lang|en|NPTL}}首次是随{{lang|en|Red Hat Linux 9}}发表的。此前老式的{{lang|en|Linux POSIX}}线程偶尔会发生系统无法产生线程的毛病，这个毛病的原因是因为在新线程开始的时候系统没有借机先占。当时的{{lang|en|Windows}}系统对这个问题的解决比较好。{{lang|en|Red Hat}}在关于{{lang|en|Red Hat Linux 9}}上的{{lang|en|[[Java]]}}的网页上发表了一篇文章称{{lang|en|NPTL}}解决了这个问题&amp;lt;ref&amp;gt;{{Cite web |url=http://java.sun.com/developer/technicalArticles/JavaTechandLinux/RedHat/ |title=Red Hat Linux 9 and Java 2 Platform, Standard Edition 1.4.2: A Winning Combination |accessdate=2008-12-13 |archive-date=2009-02-08 |archive-url=https://web.archive.org/web/20090208111809/http://java.sun.com/developer/technicalArticles/JavaTechandLinux/RedHat/ |dead-url=no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
从第3版开始{{lang|en|NPTL}}是{{lang|en|Red Hat Enterprise Linux}}的一部分，从{{lang|en|Linux}}内核2.6开始它被纳入内核。目前它完全被结合入[[GNU C 函式庫]]。&lt;br /&gt;
&lt;br /&gt;
== 设计 ==&lt;br /&gt;
{{lang|en|NPTL}}的解决方法与{{lang|en|LinuxThreads}}类似，内核看到的首要抽象依然是一个進程，新线程是通过{{lang|en|clone()}}系统调用产生的。但是{{lang|en|NPTL}}需要特殊的内核支持来解决同步的原始类型之间互相竞争的状况。在这种情况下线程必须能够入眠和再复苏。用来完成这个任务的原始类型叫做{{lang|en|[[futex]]}}。&lt;br /&gt;
&lt;br /&gt;
{{lang|en|NPTL}}是一个所谓的1×1线程函式库。用户产生的线程与内核能够分配的物件之间的联系是一对一的。这是所有线程程式中最简单的。&lt;br /&gt;
&lt;br /&gt;
== 参考资料 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://people.redhat.com/drepper/nptl-design.pdf NPTL设计论文]{{Wayback|url=http://people.redhat.com/drepper/nptl-design.pdf |date=20111220195212 }} &lt;br /&gt;
* [http://nptltracetool.sourceforge.net/ NPTL跟踪工具]{{Wayback|url=http://nptltracetool.sourceforge.net/ |date=20080515132733 }} 可以同来跟踪和调试NPTL程式的开源工具&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux內核]]&lt;br /&gt;
[[Category:C POSIX library]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Ohtashinichiro</name></author>
	</entry>
</feed>