2

私は MSVC 2010 を使用して新しい MFC プロジェクトを開始しており、現在、同時実行タスクに使用するライブラリを決定しようとしています。新しい C++0x スレッド機能は知っていますが、VC10 には実装されていません。VC12 はまだオプションではありませんが、将来提供される予定です。私には良さそうな Microsoft PPL がありますが、新しいプロジェクトのために Windows から Linux に移行する可能性があります。そのために、VC12 で標準に変更するためにブーストを使用するオプションがあります。

私の質問は、PPL または一時的にブーストしてから std のどちらを優先すべきかということです。どちらがより強力で、より便利で、長所と短所があるか、両方の経験をお聞きしたいと思います.

4

2 に答える 2

3

PPL と C++11 の同時実行ライブラリは、実際には直接的な代替物ではありません。PPL は、並行性に対する高レベルのタスク ベースのアプローチを提供し、std::thread または同様のスレッド ライブラリを使用してスレッドを直接管理するよりも、作業が簡単で効率的です。PPL には、並列アルゴリズム (parallel_for_each、parallel_transform、parallel_reduce、parallel_sort など) や、C++11 同時実行ライブラリには含まれていない同時実行コンテナーも含まれます。

また、PPL と Intel の TBB (Threading Building Blocks) は同じインターフェイスを大部分共有するように設計されており、TBB は Linux でサポートされているため、PPL を使用する場合にクロスプラットフォームの移植性があることにも注意してください。Intel、Microsoft、および NVIDIA は、PPL/TBB に基づく C++ 標準 (C++14 以降) の将来のバージョン用の並列アルゴリズム ライブラリの共同提案を行っています。

于 2013-05-22T18:00:40.060 に答える
0

ブースト スレッドは簡単で、移植性があり、十分に文書化されており、最近の C++ での私のいつもの頼りになる形式の同時実行です。Linux のビルドを考えている場合は、VC の機能に頼らないでください。そうしないと、移動が非常に苦痛になります (以前は自分で苦労しました...)。

そうは言っても、新しい STL コンテンツはほとんどの点でブーストと非常に似ているため、ブーストを標準への足がかりとして使用しても、それほど苦労することはありません。具体的な決定を下す前に、ブースト スレッドと C++11 スレッドの違いに関するこの投稿を読み、ユース ケースを解釈します。

PPL に関する私の経験はかなり限られていますが、タスク (スレッド) の作成は、従来のスレッドとは少し異なり、異なる制御パス オプションを使用する場合があります。また、PPL ルートを使用する場合、Visual Studio/Windows で修正される可能性が高いため、ライブラリの選択を評価してください。良い PPL の例は少しまばらであることを読みました (おそらく、PPL を他の同時実行ライブラリと比較する際に、クイック検索でより良い結果が得られなかったのはそのためです)。

于 2013-05-20T18:17:21.387 に答える