Myslím, že váš nejlepší zdroj informací začíná na Wikipedii a následuje odkazy odtud.
Opravdu není žádný rozdíl:NPTL je pouze současná linuxová implementace vláken POSIX, stále používáte rodinu funkcí pthread_*. Dříve v historii Linuxu se používala vyhrazená knihovna nazvaná libpthreads. NPTL se objevilo pro jádra 2.6+ přibližně v roce 2003, více podrobností viz odkaz výše.
[BTW:NPTL ==Native Posix Threads Library]
"POSIX vlákna" je "standard", definující API pro vytváření vláken. tj. uvádí, že funkce jako pthread_exit ()
atd., měly by v systému existovat a popisuje, jak by se měly chovat. Všechny operační systémy vyhovující POSIX implementují vlákna POSIX svým vlastním způsobem.
NPTL je skupina funkcí, které umožňují "Linuxu" (jádru) efektivně implementovat "vlákna POSIX" (standard).
Více o NPTL a o tom, jak k němu došlo, si můžete přečíst zde
Vlákna POSIX (pthread) nejsou implementací, je to specifikace API (standard, na papíře, v angličtině) několika funkcí, jejichž název začíná pthread_
a které jsou definovány v <pthread.h>
záhlaví. POSIX je také sada specifikací.
NPTL je nyní v GNU Libc na Linuxu a je (nebo se alespoň velmi snaží být) implementací vláken POSIX. Je to svazek zdrojového a binárního kódu na vašem systému Linux. Aplikace zkompilovaná s gcc -pthread
a propojeno s -pthread
používá dnes v Linuxu kód NPTL.
doplňky
Existují alternativní implementace pthread
-s:na Linuxu se MUSL Libc snaží být kompatibilní s Posix (což znamená mít pthreads); na jiných systémech Posix (AIX, Solaris, ...) máte také pthreads (ale nejsou NPTL nebo Glibc).