Immagino che la tua migliore fonte di informazioni sia partire da Wikipedia e seguire i link da lì.
Non c'è davvero alcuna differenza:NPTL è solo l'attuale implementazione Linux dei thread POSIX, usi ancora la famiglia di funzioni pthread_*. All'inizio della storia di Linux, veniva utilizzata una libreria dedicata chiamata libpthreads. NPTL è apparso per i kernel 2.6+ intorno al 2003, vedi il link qui sopra per maggiori dettagli.
[A proposito:NPTL ==libreria di thread Posix nativi]
I "thread POSIX" sono uno "standard", che definisce un'API per il threading. cioè afferma che funzioni come pthread_exit ()
ecc., dovrebbero esistere nel sistema e descrive come dovrebbero comportarsi. Tutti i sistemi operativi conformi a POSIX implementano i thread POSIX a modo loro.
NPTL è un insieme di funzionalità che consentono a "Linux" (il kernel) di implementare in modo efficiente i "thread POSIX" (lo standard).
Puoi leggere di più su NPTL e su come è nato qui
I thread POSIX (pthread) non sono un'implementazione, è una specifica API (uno standard, su carta, in inglese) di diverse funzioni il cui nome inizia con pthread_
e che sono definiti in <pthread.h>
intestazione. POSIX è anche un insieme di specifiche.
NPTL è ora all'interno di GNU Libc su Linux ed è (o almeno si sforza molto di essere) un'implementazione dei thread POSIX. È un mucchio di codice sorgente e binario sul tuo sistema Linux. Un'applicazione compilata con gcc -pthread
e collegato con -pthread
utilizza oggi il codice NPTL su Linux.
aggiunte
Esistono implementazioni alternative di pthread
-s:su Linux, la MUSL Libc punta ad essere compatibile con Posix (il che significa avere pthread); su altri sistemi Posix (AIX, Solaris, ...) hai anche pthreads (ma non sono NPTL o Glibc).