最良の情報源はウィキペディアから始めて、そこからリンクをたどることだと思います.
実際には違いはありません。NPTL は POSIX スレッドの現在の Linux 実装に過ぎず、関数の pthread_* ファミリを引き続き使用します。 Linux の歴史の初期には、libpthreads と呼ばれる専用ライブラリが使用されていました。 NPTL は、2003 年頃に 2.6+ カーネル用に登場しました。詳細については、上記のリンクを参照してください。
[ところで:NPTL ==ネイティブ Posix スレッド ライブラリ]
「POSIX スレッド」は、スレッド化のための API を定義する「標準」です。つまり、 pthread_exit ()
などの機能を示しています など、システムに存在する必要があり、それらがどのように動作するかを説明します。すべての POSIX 準拠のオペレーティング システムは、独自の方法で POSIX スレッドを実装しています。
NPTL は、「Linux」(カーネル) が「POSIX スレッド」(標準) を効率的に実装できるようにする一連の機能です。
NPTL の詳細とその経緯については、こちらをご覧ください
POSIX スレッド (pthread) は実装ではなく、名前が pthread_
で始まるいくつかの関数の API 仕様 (標準、紙上、英語) です。 <pthread.h>
で定義されているもの ヘッダ。 POSIX も一連の仕様です。
NPTL は現在、Linux の GNU Libc 内にあり、POSIX スレッドの実装です (または、少なくともそうしようと懸命に努力しています)。これは、Linux システム上のソース コードとバイナリ コードの集まりです。gcc -pthread
でコンパイルされたアプリケーションです。 -pthread
でリンクされています 現在、Linux で NPTL コードを使用しています。
補遺
pthread
の代替実装が存在します -s:Linux では、MUSL Libc は Posix に準拠することを目指しています (つまり、pthreads を持つことを意味します)。他の Posix システム (AIX、Solaris など) にも pthread があります (ただし、それらは NPTL や Glibc ではありません)。