Linuxでpthreadを使用すると、どのような利点がありますか?

Linuxでpthreadを使用すると、どのような利点がありますか?

今日のハードウェアおよびLinuxプラットフォームでは、スレッドモデルがプロセスモデルに比べて効率が悪いため、Linuxスレッドが実際にカーネル内のプロセスとして実装されるというどこかを読んでいます。それでは、なぜ私たちは私たちのプロジェクトで(下位互換性を除いて)まだpthreadプログラミングを使用するのですか? Linuxでpthreadsモデルを使用しなくなったのはなぜそんなに躊躇するのですか?

ベストアンサー1

あなたの質問で判断した場合、まだ問題を見ていない可能性があります。スレッド標準プロセスと比較して利点を提供します。

システムがシステムのコンテキスト遷移の数に非常に敏感であり、ユーザモードからカーネルモードに切り替える高周波取引などの問題がある。この場合、単一のメモリ空間内で作業し、軽いコンテキスト切り替えがあるか、まったくコンテキスト切り替えがない機能は、心配するほどパフォーマンスを向上させます。また、着信データストリームを処理する複数のプロセスがある場合は、データを利用可能なプロセスにコピーするスケジューラを実装したくありません。これは、共有メモリにキューを作成するか、ネットワークベースのIPCを使用して利用可能なプロセスに関するデータです。さまざまなプロセス用のメモリ領域がありますが、スレッドを使用すると、データを一度読み込んで解析して内部的に保持できるため、すべてのスレッドが必要に応じて特定のイベントにアクセスできるため、実行が速くなります。

さらに、一部のタスクは同じデータに対して異なる時間または同時に動作する可能性があります。この場合、異なる更新プロセス(スレッド)の更新を踏まないようにするのが簡単になります。

これらの問題とより多くの問題(単一のプロセススペースが有利になる場合)を考慮すると、スレッドの必要性がわかります。今Pthreadに関する限り。必ずしも使用する必要はありませんが、標準化を提供し、クロスプラットフォームのソースコード移植性を提供します。

編集する

元の質問に言及されているようです。Linuxスレッドスレッドはユーザーレベルとカーネルレベルで完全にスレッドを実装します。これはカーネルで予約できる唯一のエンティティであるため、プロセスとして処理する必要があります。 2.6カーネルからはもうそうではありません。NPTLスレッドをカーネルレベルで予約可能なエンティティとして実装します。

同様の質問も見ることができますスタックオーバーフロー

おすすめ記事