24

NPTLスレッドとPOSIXスレッドの基本的な違いは何ですか?これら2つはどのように進化しましたか?

4

3 に答える 3

35

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ではありません)。

于 2011-12-20T13:35:52.467 に答える
7

「POSIXスレッド」は「標準」であり、スレッド化のためのAPIを定義します。つまり、pthread_exit ()etcなどの機能がシステムに存在する必要があることを示し、それらがどのように動作するかを説明します。すべてのPOSIX準拠のオペレーティングシステムは、独自の方法でPOSIXスレッドを実装します。

NPTLは、「Linux」(カーネル)が「POSIXスレッド」(標準)を効率的に実装できるようにする一連の機能です。

NPTLの詳細と、それがどのようにして生まれたのかについては、こちらをご覧ください。

于 2011-12-20T13:29:23.187 に答える
2

あなたの最良の情報源はウィキペディアから始まり、そこからのリンクをたどることだと思います。

実際には違いはありません。NPTLはPOSIXスレッドの現在のLinux実装であり、引き続きpthread_*ファミリーの関数を使用します。Linuxの歴史の初期には、libpthreadsと呼ばれる専用のライブラリが使用されていました。NPTLは2003年頃に2.6以降のカーネルで登場しました。詳細については上記のリンクを参照してください。

[BTW:NPTL==ネイティブPosixスレッドライブラリ]

于 2011-12-20T13:26:08.357 に答える