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