スレッドプールを使用してマルチスレッドマージソートを作成したいので、boostライブラリをダウンロードしました。私はC++の初心者であり、ソースで与えられたサンプルプログラムの実行方法を理解するのが難しいです。ここで私はどこからダウンロードしたのですか?http://threadpool.sourceforge.net/ ....ダウンロードセクションにあります...どんな助力もありがとうございます。スレッドプールを使用したBoostライブラリ
1
A
答えて
0
OpenMPは自己管理型スレッドの要件に適しています。 this overviewに含まれるマージソートの例があります。
1
私はその特定のスレッドプールライブラリ(b.t.w.はBoostの一部ではありません)に精通していませんが、スレッドプールの一般的な概念は非常に簡単です。クラスはenqueue(std::function<void()> fn);
インターフェイスのようなものでなければなりません。必要な関数オブジェクトを得るために関数をラップするだけです。通常はstd::bind
またはlambda関数のいずれかで行われます。スレッドプールは、実行可能なスレッドがあるまで関数オブジェクトをキューに保持します。その時点で単にfn()
が呼び出されます。並列ソートに関しては、クイックソート版を書くことができます。これは、並列化のために非常に適しています。http://en.wikipedia.org/wiki/Quicksort
P.S. std::function
、対応するstd::bind
、ラムダ関数はC++ 0xの一部です。また、Boostで代替関数を見つけることもできます。
2
スレッドを管理するためのもう1つのツールはTBB Intel Thread Building Blocksです。 マージソートの実装が既にあります。「tbb/parallel_sort.hpp」 (ただし、この実装はスレッドの数に関係なく最小のO(n)時間を必要とするため効率的ではありません)
関連する問題
- 1. 汎用タスクのためのboost :: asioスレッドプールの使用
- 2. BadaでBoostライブラリを使用
- 3. ブーストプリプロセッサを使用したBoost Any Boostバリアント
- 4. CMakeを使ったBuilding Boost Systemライブラリ?
- 5. Executor Framrworkを使用したスレッドプール
- 6. スレッドプール(.NET、IIS6)を使用したディレクトリアクセス
- 7. boost :: numpy :: from_dataをboost-numpyライブラリで使用する方法
- 8. C++でboostを使ってスレッドプールを作成する方法は?
- 9. boost :: asio、スレッドプールとスレッドの監視
- 10. 標準ライブラリと組み合わせた `boost :: phoenix :: static_cast_`の使用
- 11. VS2017でBoost Pythonライブラリを使用してビルドする方法
- 12. タイムゾーン文字列を含むBoost datetimeライブラリを使用した解析エラー
- 13. MonodevelopのBoostライブラリ
- 14. Javaでスレッドプールを繰り返し使用
- 15. イベントループまたはスレッドプールを使用したFRPの例
- 16. Boost :: serializationを使用したXML階層
- 17. Boost :: Pythonを使用した高次プログラミング
- 18. Boost asioを使用したリアルタイムシリアルI/O
- 19. boost :: asioを使用したAF_NETLINK(netlink)ソケット
- 20. Boost :: Spiritを使用したカスタムスキップパーサー
- 21. Bundledプロパティを使用したBoostグラフライブラリ
- 22. SFINAE boost :: hanaを使用したテンプレートコンストラクタ
- 23. BoostライブラリのDoxygenドキュメント
- 24. 設定ファイルと共有ライブラリでboost-diを使用する
- 25. Cygwin 64ビットでboost asioライブラリを使用する方法
- 26. boostライブラリと一緒にstd :: bindプレースホルダを使用する問題
- 27. EmscriptenでBoostライブラリを使用する方法
- 28. ネットワーキング(httpクライアント)用のBoost asioライブラリ
- 29. 任意のBoostライブラリを使った奇妙なNDKコンパイル
- 30. スレッドプールを使用したJava行列の乗算
質問は何ですか? – ronag
マージソートのスレッドバージョンは、おそらくおそらくそのソートがスレッド化されていないにもかかわらず、標準ライブラリに含まれているソートよりも遅くなるでしょう。ソートはすでに数十億分の1秒以内に数十億の整数を処理することができます。スレッディングはソートアルゴリズムよりも高いレベルで行われる方がいいでしょう。 (ただし、試してみてください)) –