GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre les threads NPTL et POSIX ?

Je suppose que votre meilleure source d'information commence sur Wikipédia et suit les liens à partir de là.

Il n'y a vraiment aucune différence :NPTL n'est que l'implémentation Linux actuelle des threads POSIX, vous utilisez toujours la famille de fonctions pthread_*. Plus tôt dans l'histoire de Linux, une bibliothèque dédiée appelée libpthreads était utilisée. NPTL est apparu pour les noyaux 2.6+ vers 2003, voir le lien ci-dessus pour plus de détails.

[BTW :NPTL ==Bibliothèque de threads Posix native]


"POSIX threads" est un "standard", définissant une API pour le threading. c'est-à-dire qu'il indique que des fonctions telles que pthread_exit () etc, doivent exister dans le système et décrit comment ils doivent se comporter. Tous les systèmes d'exploitation compatibles POSIX implémentent les threads POSIX à leur manière.

NPTL est un ensemble de fonctionnalités qui permettent à "Linux" (le noyau) d'implémenter efficacement les "threads POSIX" (le standard).

Vous pouvez en savoir plus sur NPTL et son origine ici


Les threads POSIX (pthread) ne sont pas une implémentation, c'est une spécification API (un standard, sur papier, en anglais) de plusieurs fonctions dont le nom commence par pthread_ et qui sont définis dans <pthread.h> entête. POSIX est également un ensemble de spécifications.

NPTL fait maintenant partie de GNU Libc sous Linux et est (ou du moins essaie très fort d'être) une implémentation des threads POSIX. C'est un tas de code source et binaire sur votre système Linux. Une application compilée avec gcc -pthread et lié avec -pthread utilise le code NPTL sur Linux aujourd'hui.

addenda

Il existe des implémentations alternatives de pthread -s :sous Linux, la MUSL Libc vise à être conforme Posix (ce qui signifie avoir des pthreads); sur d'autres systèmes Posix (AIX, Solaris, ...) vous avez aussi des pthreads (mais ils ne sont pas NPTL ou Glibc).


Linux
  1. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  2. Quelle est la différence entre Git Switch et Checkout ?

  3. Quelle est la différence entre ls et l ?

  4. Quelle est la différence entre `su -` et `su --login` ?

  5. Quelle est la différence entre unlink et rm ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre la connexion et le shell sans connexion

Quelle est la différence entre la commande apt et apt-get ?

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

Quelle est la différence entre la route et la route IP ?