Linux を使用して C でマルチスレッド アプリケーションを作成しています。
POSIX スレッド API と OpenMP API のどちらを使用すればよいかわかりません。
どちらかを使用することの長所と短所は何ですか?
編集:
両方のAPIが作成するかどうかを明確にしてくださいカーネルレベルまたはユーザーレベルスレッド?
ベストアンサー1
Pthreads と OpenMP は、まったく異なる 2 つのマルチプロセッシング パラダイムを表します。
Pスレッドスレッドを操作するための非常に低レベルの API です。したがって、スレッド管理 (作成/結合など)、ミューテックスなどを非常に細かく制御できます。非常に基本的なものです。
一方で、オープンMPは多くのより高レベルで、移植性が高く、C の使用に制限されません。また、pthread よりもはるかに簡単にスケーリングできます。具体的な例としては、OpenMP の作業共有構造があります。これにより、比較的簡単に複数のスレッドに作業を分割できます。(Wikipedia の長所と短所のリスト。
そうは言っても、実装している特定のプログラムや、それをどのように使用する予定かについては実際には詳細が提供されていないため、ある API を他の API よりも推奨することはほとんど不可能です。