Native POSIX Thread Library
历史
在内核2.6出现之前进程是(最小)可调度的对象,当时的不真正支持线程。但是内核有一个系统调用指令,这个指令产生一个呼叫调用的進程的复件,而且这个复件与原進程使用同一地址空间。计划使用这个系统调用来提供一个内核级的线程支持。但是这个解决方法与真正的标准有一些不相容的地方,尤其是在信号处理、进程调度和进程间同步原语方面。
要提高的效应很明显需要提供内核支持以及必须重写线程函式库。为了解决这个问题出现了两个互相竞争的项目:一个的组的项目叫做(,下一代线程),另一个组是由程序员组成的。2003年中被放弃,几乎与此同时公布了。
首次是随发表的。此前老式的线程偶尔会发生系统无法产生线程的毛病,这个毛病的原因是因为在新线程开始的时候系统没有借机先占。当时的系统对这个问题的解决比较好。在关于上的的网页上发表了一篇文章称解决了这个问题[3]。
从第3版开始是的一部分,从内核2.6开始它被纳入内核。目前它完全被结合入GNU C 函式庫。
设计
的解决方法与类似,内核看到的首要抽象依然是一个進程,新线程是通过系统调用产生的。但是需要特殊的内核支持来解决同步的原始类型之间互相竞争的状况。在这种情况下线程必须能够入眠和再复苏。用来完成这个任务的原始类型叫做。
是一个所谓的1×1线程函式库。用户产生的线程与内核能够分配的物件之间的联系是一对一的。这是所有线程程式中最简单的。
参考资料
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.