24

NPTL 和 POSIX 线程之间的基本区别是什么?这两者是如何进化的?

4

3 回答 3

35

POSIX 线程 (pthread) 不是一个实现,它是几个函数的 API 规范(一个标准,纸上,英文),其名称以开头pthread_并在<pthread.h>header 中定义。POSIX 也是一组规范。

NPTL 现在位于Linux 上的GNU Libc中,并且是(或至少非常努力地成为)POSIX 线程的实现。它是 Linux 系统上的一堆源代码和二进制代码。今天,一个使用 NPTL 代码编译gcc -pthread和链接的应用程序在 Linux 上使用。-pthread

附加物

存在pthread-s 的替代实现:在 Linux 上,MUSL Libc旨在符合 Posix(这意味着具有 pthread);在其他 Posix 系统(AIX、Solaris、...)上,您也有 pthread(但它们不是 NPTL 或 Glibc)。

于 2011-12-20T13:35:52.467 回答
7

“POSIX 线程”是一个“标准”,定义了一个用于线程的 API。即它声明诸如pthread_exit ()etc 之类的功能应该存在于系统中,并描述它们应该如何表现。所有符合 POSIX 的操作系统都以自己的方式实现 POSIX 线程。

NPTL 是一组使“Linux”(内核)能够有效地实现“POSIX 线程”(标准)的特性。

您可以在此处阅读有关 NPTL 及其产生方式的更多信息

于 2011-12-20T13:29:23.187 回答
2

我想您最好的信息来源是从Wikipedia开始,然后点击那里的链接。

确实没有区别:NPTL 只是当前 Linux 的 POSIX 线程实现,您仍然使用 pthread_* 系列函数。在 Linux 历史的早期,使用了一个名为 libpthreads 的专用库。NPTL 出现在大约 2003 年的 2.6+ 内核中,有关更多详细信息,请参阅上面的链接。

[顺便说一句:NPTL == 本机 Posix 线程库]

于 2011-12-20T13:26:08.357 回答