Programmation concurrenteLe namespace QtConcurrent fournit des API de haut niveau qui offrent la possibilité d'écrire des programmes multi-thread sans l'aide de primitives de bas niveau liées aux threads telles que les mutex, les verrous de lecture-écriture, les attentes de conditions ou les sémaphores. IntroductionLes programmes écrits avec QtConcurrent ajustent automatiquement le nombre de threads utilisés en fonction du nombre de coeurs processeurs disponibles. Cela signifie que les applications écrites aujourd'hui continueront d'évoluer lors du déploiement sur des systèmes multi-coeurs dans le futur. QtConcurrent inclut des API de modèle de programmation fonctionnelle pour le traitement de liste parallèle, incluant une implémentation de MapReduce et de FilterReduce pour des systèmes de partage-mémoire (non distribuée), et des classes permettant de contrôler des calculs asynchrones dans des applications GUI :
Qt Concurrent prend en charge plusieurs conteneurs et types d'itérateurs STL-compatibles, mais fonctionne mieux avec les conteneurs Qt qui ont des itérateurs d'accès aléatoire, tels que QList ou QVector. Les fonctions de mappage et de filtrage acceptent toutes les deux les conteneurs et les itérateurs de début/fin. Vue d'ensemble des itérateurs STL pris en charge :
Les itérateurs d'accès aléatoire peuvent être plus rapides dans les cas où Qt Concurrent itére un grand nombre d'éléments légers, étant donné qu'elle permet d'aller à n'importe quel emplacement dans le conteneur. De plus, utiliser les itérateurs d'accès aléatoire permet à Qt Concurrent de fournir des informations sur la progression à travers les fonctions QFuture::progressValue() et QFutureWatcher::progressValueChanged(). Les fonctions de modifications qui n'écrasent pas les données telles que mapped() et filtered() effectuent une copie du conteneur lorsqu'elles sont appelées. Si vous utilisez des conteneurs STL, cette opération de copie peut prendre un certain temps ; dans ce cas, nous recommandons de spécifier l'itérateur de début et de fin du conteneur. RemerciementsMerci à Mikael Sans et à Jonathan Courtois pour leur traduction ainsi qu'à Philippe Beaucart et à Thibaut Cuvelier pour la relecture ! |
Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. | Qt 4.6 | |
Copyright © 2024 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD. | ||
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP ! |