yan-verdavaine.developpez.com :: Page d'index
IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Programmation concurrente

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

Introduction

Les 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 :

Type d’itérateur Classes d’exemple Statut de prise en charge
Input Iterator Non pris en charge
Output Iterator Non pris en charge
Forward Iterator std::slist Pris en charge
Bidirectional Iterator QLinkedList, std::list Pris en charge
Random Access Iterator QList, QVector, std::vector Pris en charge et recommandés

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.

Remerciements

Merci à <!xhell!> et à <!johnlamericain!> pour leur traduction ainsi qu’à <!hornetbzz!> et à <!dourouc!> pour la relecture !

doc/4.6/threads-qtconcurrent.txt · Dernière modification: 2010/07/25 16:48 (modification externe)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki

Copyright © 2025 Developpez LLC Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.