NPTL和POSIX线程之间的基本区别是什么?这两者是如何发展的?
POSIX线程(pthread)不是实现,而是API规范(一份以英语书写的标准文件),其中包含多个名称以 pthread_
开头的函数,它们在 <pthread.h>
头文件中定义。POSIX也是一组规范。
NPTL现在已经内置在Linux上的 GNU Libc 中,它是(或者至少非常努力地尝试成为)POSIX线程的一个实现。它是你的Linux系统上一堆源代码和二进制代码。
使用 gcc -pthread
编译并链接 -pthread
的应用程序今天在Linux上使用NPTL代码。
存在pthread
的替代实现:在Linux上,MUSL Libc旨在符合Posix(这意味着具有pthread);在其他Posix系统(AIX、Solaris等)上,你也有pthread(但它们不是NPTL或Glibc)。
-lpthread
和-pthread
都使用NPTL实现吗? - Anish Ramaswamy