GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unterschied zwischen NPTL- und POSIX-Threads?

Ich denke, Ihre beste Informationsquelle ist, bei Wikipedia anzufangen und von dort aus den Links zu folgen.

Es gibt wirklich keinen Unterschied:NPTL ist nur die aktuelle Linux-Implementierung von POSIX-Threads, Sie verwenden immer noch die pthread_*-Funktionsfamilie. Früher in der Linux-Geschichte wurde eine dedizierte Bibliothek namens libpthreads verwendet. NPTL erschien ca. 2003 für 2.6+ Kernel, siehe Link oben für weitere Details.

[Übrigens:NPTL ==Native Posix-Threads-Bibliothek]


"POSIX-Threads" ist ein "Standard", der eine API für das Threading definiert. d.h. es besagt, dass Funktionen wie pthread_exit () usw. sollten im System vorhanden sein und beschreiben, wie sie sich verhalten sollen. Alle POSIX-kompatiblen Betriebssysteme implementieren POSIX-Threads auf ihre eigene Weise.

NPTL ist eine Reihe von Funktionen, die es "Linux" (dem Kernel) ermöglichen, "POSIX-Threads" (den Standard) effizient zu implementieren.

Hier können Sie mehr über NPTL und wie es dazu kam lesen


POSIX-Threads (pthread) ist keine Implementierung, es ist eine API-Spezifikation (ein Standard, auf Papier, in Englisch) mehrerer Funktionen, deren Name mit pthread_ beginnt und die in <pthread.h> definiert sind Header. POSIX ist auch eine Reihe von Spezifikationen.

NPTL befindet sich jetzt in GNU Libc unter Linux und ist (oder bemüht sich zumindest sehr darum) eine Implementierung von POSIX-Threads. Es ist ein Haufen Quell- und Binärcode auf Ihrem Linux-System. Eine Anwendung, die mit gcc -pthread kompiliert wurde und mit -pthread verknüpft verwendet heute NPTL-Code unter Linux.

Nachträge

Es gibt alternative Implementierungen von pthread -s:Unter Linux zielt die MUSL Libc darauf ab, Posix-kompatibel zu sein (was bedeutet, pthreads zu haben); auf anderen Posix-Systemen (AIX, Solaris, ...) haben Sie auch pthreads (aber sie sind nicht NPTL oder Glibc).


Linux
  1. Was ist der Unterschied zwischen insmod und modprobe

  2. Was ist der Unterschied zwischen strtok_r und strtok_s in C?

  3. Was ist der Unterschied zwischen fsck und e2fsck?

  4. Was ist der Unterschied zwischen `su -` und `su --login`?

  5. Was ist der Unterschied zwischen unlink und rm?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist der Unterschied zwischen apt und dem Befehl apt-get?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

Was ist der Unterschied zwischen $(CC) und $CC?