Qt fournit un support de threads dans le formulaire des classes de threading indépendantes de la plateforme, une manière thread-safe1) de poster des évènements, et des connexions signaux/slots à travers les threads. Cela rend simple le développement d’applications Qt multi-thread et de tirer profit des machines multiprocesseurs. La programmation multi-thread est aussi un paradigme très utile pour exécuter des opérations consommatrices en temps de calcul sans pour autant bloquer l’interface utilisateur d’une application.
Les précédentes versions de Qt offraient l’option de compiler la bibliothèque sans le support des threads. Depuis Qt 4.0, les threads sont toujours activés.
Sujets :
Ce document est destiné à un public possédant la connaissance et l’expérience des applications multi-thread. Si vous débutez dans le domaine du “threading”, reportez-vous à la liste des lectures recommandées :
Ces classes sont appropriées aux applications threadées.
Lancement asynchrone | L’en-tête <QtConcurrentRun> fournit une manière de lancer une fonction dans un thread séparé. |
Concurrence et réduction de filtre | L’en-tête <QtConcurrentFilter> fournit des filtres simultanés et réductibles. |
Concurrence et réduction de map | L’en-tête <QtConcurrentMap> fournit des maps simultanés et réductibles. |
QAtomicInt | Opérations atomiques indépendantes de la plateforme sur des entiers. |
QAtomicPointer | Classe template qui fournit des opérations atomiques indépendantes de la plateforme sur des pointeurs. |
QFuture | Représente le résultat d’un calcul asynchrone. |
QFutureSynchronizer | Classe de convenance qui simplifie la synchronisation de QFuture. |
QFutureWatcher | Permet l’écoute d’un QFuture par l’utilisation des signaux et des slots. |
QMutex | Sérialisation d’accès entre les threads. |
QMutexLocker | Classe utilitaire qui simplifie le verrouillage et le déverrouillage des mutexs. |
QReadLocker | Classe utilitaire qui simplifie le verrouillage et le déverrouillage des verrous de lecture et d’écriture pour l’accès en lecture. |
QReadWriteLock | Verrouillage de lecture et d’écriture. |
QRunnable | La classe de base pour tous les objets exécutables. |
QSemaphore | Sémaphore de comptage général. |
QThread | Threads indépendants de la plateforme. |
QThreadPool | Gère une collection de QThread. |
QThreadStorage | Stockage de données par thread. |
QWaitCondition | Variable conditionnelle pour la synchronisation de threads. |
QWriteLocker | Classe utilitaire qui simplifie le verrouillage et le déverrouillage des verrous de lecture et d’écriture pour l’accès en écriture. |
QtConcurrent | API de haut niveau qui permet l’écriture de programmes multi-thread sans avoir à utiliser de threads de bas niveau. |
Note : Les classes Qt de threading sont implémentées avec des API de threading natives : par exemple, Win32 et pthreads. Par conséquent, elles peuvent être utilisées avec d’autres threads de la même API.
Merci à <!zamnell!> pour la traduction et à <!dourouc!>, <!johnlamericain!> et <!hornetbzz!> pour leur relecture !