2009-09-01 14 views
0

Linux上の1つのリソースでは、pthread-createは他のUNIXベースのプラットフォーム(他の方法でも同様に実装されています)に対して、クローンシステムコールで実装されています。
これは、Linuxでは、pthread_createを使用して同じプロセスから作成された2つのスレッドの親プロセスIDが異なることを意味します。Linux上でのpthread_createの実装

$ ./a.out 
new thread: pid 6628 tid 1026 (0x402) 
main thread: pid 6626 tid 1024 (0x400) 

質問

  • クローンシステムコールは(そのようなファイル記述子やメモリなど)親の実行コンテキストの設定可能な量を共有することができ、子プロセスを作成しますが、それはすべての実装の中で私にそれを探しますこれはおそらく最も効率的なものではありません。 Linuxでは、pthread_createから作成されたすべてのスレッドに対応するプロセスがあります(ただし、他のプロセスとリソースを共有します)。この解釈は正しいのでしょうか?

答えて

6

あなたがスレッドごとに異なるPIDを返さ時代遅れのLinuxThreadsのpthreadsの実装を、使用することができるように見えます。現在の実装はNPTL(ネイティブPOSIXスレッドライブラリ)です。これはclone()を使用して実装されていますが、clone()が強化され、非常に効率的なPOSIX準拠のスレッド実装を構築できるようになり、NPTLはこれらの拡張機能を幅広く使用します。

コマンドgetconf GNU_LIBPTHREAD_VERSIONを使用して、使用している実装を判断できます。詳細と相違点のリストについては、pthreads(7)を参照してください。

関連する問題