NPTL和pthread令人困惑

Who*_*ami 19 linux posix pthreads nptl

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

Bas*_*tch 32

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

NPTL现在位于Linux上的GNU Libc中,并且(或者至少很难尝试)POSIX线程的实现.它是Linux系统上的一堆源代码和二进制代码.编译gcc -pthread和链接的应用程序-pthread今天在Linux上使用NPTL代码.

附加物

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


Arj*_*kar 5

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

NPTL是一系列功能,使"Linux"(内核)能够有效地实现"POSIX线程"(标准).

你可以阅读更多关于NPTL以及是怎么回事,在这里