単語数

map-reduce アルゴリズムの使用方法を示します。

Qt ConcurrentWord Count のサンプルは、ファイルのコレクション内の単語をカウントする問題に適用した場合の map-reduce アルゴリズムの使用方法を示します。

まず、アプリケーションは QFileDialog を起動して開始パスを選択し、出力をコンソールに出力します。

例を実行する

Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Example を参照してください。

操作の比較

mappedReduced() を使用したマルチスレッド・アプローチと、テキスト・ファイル内の単語をカウントするシング ル・スレッドの逐次的アプローチを比較します:

    ...
    WordCount total = singleThreadedWordCount(files);
    ...
    WordCount total = QtConcurrent::mappedReduced(files, countWords, reduce).result();
    ...

mappedReduced 関数の最初の引数は、操作対象のコンテナである。第 2 引数はマッピング関数countWords() である。これは複数のスレッドから並列に呼び出される。3番目の引数は、リデューシング関数reduce() です。この関数は、マッピング関数が返す結果ごとに1回呼び出され、最終的な計算結果を生成する。

この関数は,WordCount 型のQFuture オブジェクトを返す.このQFuture に対して直ちにresult 関数を呼び出し、結果が利用可能になるまで以降の実行をブロックします。

注意: マッピング関数は複数のスレッドから呼び出されるため、スレッドセーフでなければなりません。

プロジェクト例 @ code.qt.io

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。