GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi vlákny NPTL a POSIX?

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).


Linux
  1. Jaký je rozdíl mezi mutexem a kritickou sekcí?

  2. Jaký je rozdíl mezi fsck a e2fsck?

  3. Jaký je rozdíl mezi ls a l?

  1. Jaký je rozdíl mezi `su -` a `su --login`?

  2. Jaký je rozdíl mezi $(CC) a $CC?

  3. Jaký je rozdíl mezi unlink a rm?

  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  3. Jaký je rozdíl mezi trasou a ip trasou?