Wortanzahl
Veranschaulicht die Verwendung des Map-Reduce-Algorithmus.
Das Beispiel „ Qt Concurrent: Wortanzahl“ veranschaulicht die Anwendung des Map-Reduce-Algorithmus bei der Zählung von Wörtern in einer Sammlung von Dateien.
Zunächst startet die Anwendung ein QFileDialog-Fenster zur Auswahl eines Startpfads und gibt anschließend die Ausgabe auf der Konsole aus.
Ausführen des Beispiels
Sie können das Beispiel wie folgt ausführen:
- Qt Creator
Öffnen Sie den Modus „ Welcome “ und wählen Sie das Beispiel unter „ Examples “ aus. Weitere Informationen finden Sie unter Qt Creator: Tutorial: Erstellen und Ausführen.
- Qt Extension for Visual Studio Code
Führen Sie den Befehl „ Qt: Open Qt examples “ über die Seite „ Command Palette “ aus und wählen Sie das Beispiel aus der Liste aus. Weitere Informationen finden Sie unter Qt Extension for Visual Studio Code: Tutorial: Erstellen und Ausführen.
Vergleich der Vorgehensweisen
Vergleichen Sie einen single-threaded, sequenziellen Ansatz zum Zählen der Wörter in den Textdateien mit einem multithreaded-Ansatz unter Verwendung von `mappedReduced()`:
...
WordCount total = singleThreadedWordCount(files);
...
WordCount total = QtConcurrent::mappedReduced(files, countWords, reduce).result();
...Das erste Argument der Funktion ` mappedReduced ` ist der Container, auf dem die Operation ausgeführt werden soll. Das zweite Argument ist die Mapping-Funktion ` countWords()`. Sie wird parallel von mehreren Threads aufgerufen. Das dritte Argument ist die Reduzierungsfunktion ` reduce()`. Sie wird einmal für jedes von der Mapping-Funktion zurückgegebene Ergebnis aufgerufen und generiert das endgültige Berechnungsergebnis.
Die Funktion gibt ein „ QFuture “-Objekt vom Typ „ WordCount “ zurück. Rufen Sie die Funktion „ result “ sofort auf diesem „ QFuture “ auf, um die weitere Ausführung zu blockieren, bis das Ergebnis verfügbar ist.
Hinweis: Die Mapping-Funktion muss threadsicher sein, da sie von mehreren Threads aufgerufen wird.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.