Supongo que su mejor fuente de información es comenzar en Wikipedia y seguir los enlaces desde allí.
Realmente no hay diferencia:NPTL es solo la implementación actual de Linux de subprocesos POSIX, todavía usa la familia de funciones pthread_*. Anteriormente en la historia de Linux, se utilizó una biblioteca dedicada llamada libpthreads. NPTL apareció para kernels 2.6+ alrededor de 2003, consulte el enlace anterior para obtener más detalles.
[Por cierto:NPTL ==Biblioteca de subprocesos Posix nativos]
"Subprocesos POSIX" es un "estándar", que define una API para subprocesos. es decir, establece que funciones como pthread_exit ()
etc., deben existir en el sistema y describe cómo deben comportarse. Todos los sistemas operativos compatibles con POSIX implementan subprocesos POSIX a su manera.
NPTL es un conjunto de características que permiten que "Linux" (el kernel) implemente de manera eficiente "subprocesos POSIX" (el estándar).
Puede leer más sobre NPTL y cómo surgió aquí
Los hilos POSIX (pthread) no es una implementación, es una especificación API (un estándar, en papel, en inglés) de varias funciones cuyo nombre comienza con pthread_
y que se definen en <pthread.h>
encabezamiento. POSIX es también un conjunto de especificaciones.
NPTL ahora está dentro de GNU Libc en Linux y es (o al menos intenta ser) una implementación de subprocesos POSIX. Es un montón de código fuente y binario en su sistema Linux. Una aplicación compilada con gcc -pthread
y vinculado con -pthread
usa código NPTL en Linux hoy.
anexos
Existen implementaciones alternativas de pthread
-s:en Linux, MUSL Libc pretende ser compatible con Posix (lo que significa tener pthreads); en otros sistemas Posix (AIX, Solaris, ...) también tiene pthreads (pero no son NPTL o Glibc).