Sur cette page

Nombre de mots

Démontre comment utiliser l'algorithme map-reduce.

L'exemple Qt Concurrent Word Count démontre l'utilisation de l'algorithme map-reduce lorsqu'il est appliqué au problème du comptage de mots dans une collection de fichiers.

Tout d'abord, l'application lance un QFileDialog pour sélectionner un chemin de départ, puis imprime la sortie sur la console.

Exécution de l'exemple

Pour exécuter l'exemple à partir de Qt Creatorouvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.

Comparaison des opérations

Comparez une approche séquentielle à un seul thread pour compter les mots dans les fichiers texte à une approche multithread avec mappedReduced() :

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

Le premier argument de la fonction mappedReduced est le conteneur sur lequel opérer. Le deuxième argument est la fonction de mappage countWords(). Elle est appelée en parallèle par plusieurs threads. Le troisième argument est la fonction de réduction reduce(). Elle est appelée une fois pour chaque résultat renvoyé par la fonction de mappage et génère le résultat final du calcul.

La fonction renvoie un objet QFuture de type WordCount. Appelez immédiatement la fonction result sur cet objet QFuture pour bloquer toute exécution ultérieure jusqu'à ce que le résultat soit disponible.

Remarque : la fonction de mappage doit être à l'épreuve des threads puisqu'elle est appelée à partir de plusieurs threads.

Exemple de projet @ code.qt.io

© 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.